Freemarker 2.3.24 自动转义和 spring.ftl 宏问题
Freemarker 2.3.24 auto-escape and spring.ftl macros issue
我升级到 Freemarker 2.3.24 以便将设置 output_format 用作 HTMLOutputFormat 并启用自动转义,但是当我使用 spring.ftl 从 属性 文件中读取值时我得到 "Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes." 有谁知道如何将 Freemarker 自动转义与 spring 属性 文件 reader 集成?
这是我的配置 bean:
<bean id="freeMarkerConfigurer"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/views/"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="freemarkerSettings">
<props>
<prop key="output_format">HTMLOutputFormat</prop>
</props>
</property>
</bean>
这是我的 test.ftl
<#import "/spring.ftl" as spring/>
<html>
<div>hello</div>
<p><@spring.message "welcome"/></p>
</html>
我得到这个错误:
Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes.
由于您有一些 "legacy" 模板(来自 Spring),您应该单独使用全局 output_format
。相反,您应该仅为非旧版模板指定 output_format
。这可以通过两种方式完成。一种是使用 "ftlh" 文件扩展名而不是 "ftl"(假设您想要 HTML-转义),然后将 recognize_standard_file_extensions
设置为 true
。另一种是使用 template_configurations
设置(参见 http://freemarker.org/docs/pgui_config_templateconfigurations.html)来指定一些其他名称模式以将 output_format
与之相关联(例如与 Spring 模板不匹配的任何内容).
我升级到 Freemarker 2.3.24 以便将设置 output_format 用作 HTMLOutputFormat 并启用自动转义,但是当我使用 spring.ftl 从 属性 文件中读取值时我得到 "Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes." 有谁知道如何将 Freemarker 自动转义与 spring 属性 文件 reader 集成?
这是我的配置 bean:
<bean id="freeMarkerConfigurer"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/views/"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="freemarkerSettings">
<props>
<prop key="output_format">HTMLOutputFormat</prop>
</props>
</property>
</bean>
这是我的 test.ftl
<#import "/spring.ftl" as spring/>
<html>
<div>hello</div>
<p><@spring.message "welcome"/></p>
</html>
我得到这个错误:
Using ?html (legacy escaping) is not allowed when auto-escaping is on with a markup output format (HTML), to avoid double-escaping mistakes.
由于您有一些 "legacy" 模板(来自 Spring),您应该单独使用全局 output_format
。相反,您应该仅为非旧版模板指定 output_format
。这可以通过两种方式完成。一种是使用 "ftlh" 文件扩展名而不是 "ftl"(假设您想要 HTML-转义),然后将 recognize_standard_file_extensions
设置为 true
。另一种是使用 template_configurations
设置(参见 http://freemarker.org/docs/pgui_config_templateconfigurations.html)来指定一些其他名称模式以将 output_format
与之相关联(例如与 Spring 模板不匹配的任何内容).