让Spring告诉FreeMarker使用的URL编码

时间:2014-02-03 11:48:41

标签: url spring-mvc freemarker

我正在使用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')。

如何解决此问题?

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>