spring 在freemarker模板中使用〈#ftl>指令

k3fezbri  于 2022-10-30  发布在  Spring
关注(0)|答案(2)|浏览(235)

我试图让Freemarker将我的模板文件解析为UTF-8,但它似乎总是将它们解析为Cp 1252。

2013-07-30 00:00:00.984 DEBUG freemarker.cache:? Could not find template in cache, creating new one; id=["myFile.ftl"["es_MX",Cp1252,parsed] ]

我进行了搜索,发现添加FTL指令允许我指定编码。
我将其添加到模板文件(保存在UTF-8中,在记事本++中带有BOM),如下所示:

<#ftl encoding="UTF-8">
Estimado Usuario,
Testing this content!
<#/ftl>

但是把这个记在日志里。

MessageTemplateException [message=Unable to process template due to Encountered "<#ftl " at line 1, column 4 in myFile.ftl.
Was expecting one of:
    <EOF> 
    <ATTEMPT> ...
    <IF> ...
    <LIST> ...
    <FOREACH> ...
    <SWITCH> ...
    <ASSIGN> ...
    <GLOBALASSIGN> ...
    <LOCALASSIGN> ...
    <_INCLUDE> ...
    <IMPORT> ...
    <FUNCTION> ...
    <MACRO> ...
    <TRANSFORM> ...
    <VISIT> ...
    <STOP> ...
    <RETURN> ...
    <CALL> ...
    <SETTING> ...
    <COMPRESS> ...
    <COMMENT> ...
    <TERSE_COMMENT> ...
    <NOPARSE> ...
    <BREAK> ...
    <SIMPLE_RETURN> ...
    <HALT> ...
    <FLUSH> ...
    <TRIM> ...
    <LTRIM> ...
    <RTRIM> ...
    <NOTRIM> ...
    <SIMPLE_NESTED> ...
    <NESTED> ...
    <SIMPLE_RECURSE> ...
    <RECURSE> ...
    <FALLBACK> ...
    <ESCAPE> ...
    <NOESCAPE> ...
    <UNIFIED_CALL> ...
    <WHITESPACE> ...
    <PRINTABLE_CHARS> ...
    <FALSE_ALERT> ...
    "${" ...
    "#{" ...
 with inputs of {loginUrl=testURL} in myFile.ftl with locale es_MX, code=SUCCESS, arguments=[]]

也许我做得不对?

js4nwp54

js4nwp541#

不要使用BOM。也不要使用</#ftl>,因为只有<#ftl>。但最重要的是,如果你的大多数模板都是UTF-8,只需将FreeMarker的默认编码设置为UTF-8(在Spring中,类似于<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">...<property name="freemarkerSettings">...<props>...<prop key="default_encoding">UTF-8</prop>),因此你不需要使用#ftl

2guxujil

2guxujil2#

我今天遇到了同样的问题,最后找到了使用〈#ftl〉指令的方法,所以如果同样的事情发生在任何人身上:
我的问题是我没有把〈#ftl〉指令放在我的模板上面。一旦我把它放在我的模板的第一行,一切都像魔咒一样工作。

相关问题