springmvc+jsp+freemarker多模板解析器配置

1.在pom.xml中添加相关依赖

  <!--freemarker包-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker-gae</artifactId>
<version>2.3.23</version>
</dependency>


2.在springContext.xml中配置模板解析器

<!-- 配置视图解析器 -->
<!--jsp解析器 InternalResourceViewResolver -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp"/>
<property name="suffix" value=".jsp"/>
<property name="contentType" value="text/html;charset=UTF-8"/>
<property name="order" value="1"/>
</bean>

<!--配置freeMarker视图解析器  FreeMarkerViewResolver-->
<bean id="viewResolverFtl" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
<property name="contentType" value="text/html; charset=UTF-8"/>
<property name="exposeRequestAttributes" value="true" />
<property name="exposeSessionAttributes" value="true" />
<property name="exposeSpringMacroHelpers" value="true" />
<property name="cache" value="true" />
<property name="suffix" value=".ftl" />
<property name="order" value="0"/>
</bean>

<!-- 配置freeMarker的模板路径 -->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/ftl/"/>
<property name="freemarkerVariables">
<map>
<entry key="xml_escape" value-ref="fmXmlEscape" />
</map>
</property>
<property name="defaultEncoding" value="UTF-8"/>
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="locale">zh_CN</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="number_format">#.##</prop>
</props>
</property>
</bean>
<bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>

备注:
1.在视图解析器中有一个<property name="order" value="orderValue"/>的配置,这个配置表示解析器的优先级别。
我们将FreeMarkerViewResolver的级别设为0,将InternalResourceViewResolver的级别设为1。
这样,解析器就会优先使用 FreeMarkerViewResolver 进行解析,如果找不到相应的模板,
就使用InternalResourceViewResolver进行解析,如果还找不到页面,就会产生一个404错误!

2.InternalResourceViewResolver比较特殊的,只要视图名传给他,都不会再交给下一个order,而是直接forward,
所以他的order应该最大,否则后面的视图解析器都不能有机会处理。


 
原文地址:https://www.cnblogs.com/binkai/p/10556857.html