Freemarker 2.3.24自动转义和spring.ftl宏问题

时间:2016-05-18 11:37:35

标签: spring freemarker

我升级到Freemarker 2.3.24以便将设置output_format用作HTMLOutputFormat并启用自动转义但是当我使用spring.ftl从属性文件中读取值时,我得到“使用?html(遗留转义)不是使用标记输出格式(HTML)启用自动转义时允许,以避免双重逃避错误。“有谁知道如何将Freemarker自动转义与spring属性文件阅读器集成?

这是我的配置bean:

  this.uploadCsv=function(file){
        alert("inside upload csv service ");
        return $http.post('http://localhost:3005/customers/csv').then(function(response){
            deferred.resolve(response.data);
            return deferred.promise;
        },
        function(error){
            deferred.reject(error);
            return deferred.promise;
        });
    };//end of uploadCsv function

这是我的test.ftl

<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>

我收到此错误:

<#import "/spring.ftl" as spring/>
<html>
<div>hello</div>
<p><@spring.message "welcome"/></p>
</html>

1 个答案:

答案 0 :(得分:0)

由于你有一些“遗留”模板(来自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模板不匹配的任何内容)。