我正在使用FreeMarker和Spring生成我的HTML页面。在我的Freemarker页面中,我尝试URL转义String
值,如下所示:
<a href="<@spring.url "/ext/Thing/${thing?url}/"/>">Thing ${thing}</a>
这会导致FreeMarker异常抱怨
ERROR 2014-02-03 11:08:45,513执行FreeMarker模板时出错 FreeMarker模板错误: 要进行URL编码,包含FreeMarker的框架必须指定输出编码或URL编码字符集,因此请程序员修复它。或者,作为最后的机会,您可以在模板中设置url_encoding_charset设置,例如&lt; #setting url_escaping_charset ='ISO-8859-1'&gt;,或明确地将字符集提供给buit-in,例如FOO?URL( 'ISO-8859-1')。
如何解决此问题?
答案 0 :(得分:4)
首先,what "URL encoding charset" to use?那should be UTF-8。
在这种情况下,“包含FreeMarker的框架”是Spring,特别是必须存在的org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer
bean才能将FreeMarker与Spring一起使用。您必须提供freemarkerSettings
Property
(键值映射),其中包含url_escaping_charset
属性的值。在Spring web servlet配置文件(bean配置文件)中写下这样的东西:
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/views/" />
<property name="freemarkerSettings">
<props>
<prop key="url_escaping_charset">UTF-8</prop>
</props>
</property>
</bean>