SpringMVC多视图解析器配置与自定义解析器(增加模板全局变量)

双视图解析器配置

<!-- freemarker  视图解析器配置 -->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
		<!-- 默认视图解析器 
		<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
		 -->
                <!--下面是自定义的视图解析器,必须extends FreeMarkerView 并且重写 exposeHelpers方法--> 
		<property name="viewClass" value="com.lwp.view.MyFreeMarkerView"/>
		<!-- order表示解析器的优先级别   这里是多解析器的关键 会从低到高寻找模板,如果都没有则404-->
		<property name="order" value="5" />
		<property name="suffix" value=".ftl" />
		<property name="contentType" value="text/html;charset=UTF-8" />
		<property name="exposeRequestAttributes" value="true" />
 		<property name="exposeSessionAttributes" value="true" />
 		<property name="exposeSpringMacroHelpers" value="true"/>
	</bean>
	<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath" value="/WEB-INF/jsp/" />
		<property name="freemarkerSettings">
			<props>
				<prop key="template_update_delay">0</prop>
				<prop key="default_encoding">UTF-8</prop>
				<prop key="number_format">0.##########</prop>
				<prop key="date_format">yyyy-MM-dd HH:mm:ss</prop>
				<prop key="classic_compatible">true</prop>
				<prop key="template_exception_handler">ignore</prop>
			</props>
		</property>
	</bean>
	
	<!-- Jsp视图解析器配置 -->
	<bean id="jspViewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver"
                <!--默认的Jsp视图解析器   p:viewClass="org.springframework.web.servlet.view.JstlView"--> 
                <!--自定义Jsp解析器 须extends JstlView 并且重写 exposeHelpers方法--> 
		p:viewClass="com.lwp.view.MyJspView"
                <!--这里order为6 jsp一定要最大,则表示如果freemarker模板路径下没有对应的ftl那么就从jsp模板路径下找--> 
		p:prefix="/" p:suffix=".jsp" p:order="6" />

自定义视图解析器
一:FreeMarker解析器
在SpringMVC和FreeMarker整合后,在FreeMarker模板里面不能使用${base}获取项目名称,解决方案就是自定义一个解析器

代码如下:

SpringMVC多视图解析器配置与自定义解析器(增加模板全局变量)_第1张图片

二:Jsp解析器


SpringMVC多视图解析器配置与自定义解析器(增加模板全局变量)_第2张图片


================================================================================ 
完成后,在对应的模板文件里面就可以使用 ${xxx}获取request.setAttrbute("xxxx",value);的值了

你可能感兴趣的:(freemarker,jsp,springMVC,解决方案,全局变量)