2016-05-18 17 views
1

output_formatをHTMLOutputFormatとして使用し、自動エスケープを有効にするためにFreemarker 2.3.24にアップグレードしましたが、spring.ftlを使用してプロパティから値を読み込むとファイルを取得しようとすると、自動エスケープがマークアップ出力フォーマット(HTML)でオンになっていると、ダブルエスケープの間違いを避けるために "?html(従来のエスケープ)を使用することはできません。 Freemarkerの自動エスケープをSpringのプロパティファイルリーダーと統合する方法を知っている人はいますか?ここ Freemarker 2.3.24自動エスケープとspring.ftlマクロの問題

が私のconfig 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. 

答えて

0

を"テンプレート(春から)では、グローバルoutput_formatのままにする必要があります。代わりに、非レガシーテンプレートの場合にのみoutput_formatを指定する必要があります。それは2つの方法で行うことができます。 1つは "ftl"の代わりに "ftlh"というファイル拡張子(HTMLエスケープが必要な場合)を使用して、recognize_standard_file_extensionstrueに設定しています。もう1つはtemplate_configurations設定(http://freemarker.org/docs/pgui_config_templateconfigurations.html参照)を使用して、output_format(Springテンプレートと一致しないものなど)を関連付けるための別の名前パターンを指定しています。