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>
<!-- 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....
以上内容均为个人所述,如有不妥,欢迎指正,谢谢