1.配置config
<span style="font-size:14px;"><bean id="freemarkerConfig" class="com.sankuai.meituan.basic.webapp.HtmlFreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/views/"/>
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="default_encoding">UTF-8</prop>
<prop key="locale">zh_CN</prop>
<prop key="url_escaping_charset">UTF-8</prop>
<prop key="whitespace_stripping">true</prop>
<prop key="number_format">0.##</prop>
</props>
</property>
<property name="freemarkerVariables">
<map>
<entry key="timestamp" value-ref="timestampLabel"/>
</map>
</property>
</bean>
</span>
2.配置视图解析器Resolver
<span style="font-size:14px;"><bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="contentType" value="text/html; charset=UTF-8"/>
<property name="cache" value="true"/>
<property name="prefix" value=""/>
<property name="suffix" value=".ftl"/>
<property name="exposeSpringMacroHelpers" value="true"/>
<property name="exposeRequestAttributes" value="true"/>
<property name="exposeSessionAttributes" value="true"/>
<property name="allowSessionOverride" value="true"/>
<property name="requestContextAttribute" value="request"/>
</bean></span>
几个property注意:
(1)exposeSpringMacroHelpers
在视图解析器的定义中,"exposeSpringMacroHelpers"设置是否通过Spring的宏库暴露一个RequestContext(名为springBindRequestContext)供外部使用,默认值为false。它暴露了处理表单和验证错误信息的宏操作;
(2)exposeRequestAttributes:默认值false,设置是否所有的request属性在与模板进行合并之前添加到model中。(可以理解为request范围内包含的所有对象,而不是一个真正的Request对象。)
(3)exposeSessionAttributes:默认值false,设置是否所有的session属性在与模板进行合并之前添加到model中。(理解同上)