关于springmvc配置html和jsp两种视图解析器所出现的问题

springmvc的视图解析器怎么配置?

当然是真么配置了(举个栗子):


没毛病吧,跳转页面(jsp)嗖嗖的。

那要是html页面怎么配置呢?想都不用想,当然是这么配置(举个橘子):


运行一下(html),没毛病!

问题:

那要是既要有jsp视图,又要有html视图呢?这么办呗(举个柿子):



是不是跟你想到一块去了呢?那么来运行一下:


就是要访问的是jsp页面的时候,会加上jsp视图的前缀和后缀,,但是,如果还想访问html页面时,还是会加上jsp视图的前缀和后缀,然后就404了;把html的视图解析放在上面,情况则会相反,,各种设置优先级也无济于事.....

解决

如果你也遇到了同样的问题,那么刚好,我已经找到了解决的方法,供您参考:

<!-- 配置html视图解析器 -->
	<!-- html视图解析器 必须先配置freemarkerConfig,注意html是没有prefix前缀属性的-->  
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">    
       <property name="templateLoaderPath">    
           <value>/html/</value>    
       </property>    
    </bean>    
    <bean id="htmlviewResolver"    
       class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">    
       <property name="suffix" value=".html" />   
       <property name="order" value="0"></property>   
       <property name="contentType" value="text/html;charset=UTF-8"></property>           
   </bean>   
	
	<!-- jsp视图解析器 -->
	<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> -->
		<!-- 如果配置的有html视图解析器,不能用jstl的那个 -->
		<property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/> 
		<property name="prefix" value="/jsp/" />   <!-- jsp前缀 -->
		<property name="suffix" value=".jsp" />		<!-- jsp后缀 -->
		<property name="contentType" value="text/html;charset=UTF-8"/>
		<property name="order" value="0" />		<!-- 配置优先等级,越小优先级越高 -->
	</bean>

这么配置就OK了,注解已经写得很清楚

不过我当时配置的时候还遇上了这么一个异常:


找不到FreeMarkerConfigurationFactory类,明显是少导包了。如果你也遇到了这个异常,那么添加一个依赖就可以了


大功告成,美滋滋

java就像一盒巧克力,你永远不知道,ta还爆出什么bug....

以上内容均为个人所述,如有不妥,欢迎指正,谢谢



猜你喜欢

转载自blog.csdn.net/HELLOMRP/article/details/79783571