下面以jsp、freemarker举例:
Springmvc整合freemarker:https://blog.csdn.net/fd2025/article/details/80409991
<!--配置jsp视图解析器 -->
<bean id="viewResolverCommon" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp"/><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="order" value="1"/>
</bean>
<!-- 配置freeMarker视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
<property name="prefix" value=""/><!-- 上面已经配了,这里就不用配啦 -->
<property name="contentType" value="text/html; charset=utf-8" />
<property name="requestContextAttribute" value="request" />
<property name="suffix" value=".ftl" />
<property name="order" value="0"/>
</bean>
只要在viewResolver中配置 order 即可;
DispatcherServlet会加载所有的viewResolver到一个list中,并按照优先级进行解析。
注意:
order中的值越小,优先级越高。
而id为viewResolver的viewResolver的优先级是最低的。
如果某个解析器没有找到合适的视图,Spring会在上下文中寻找是否配置了其它的解析器。 如果有,它会继续进行解析,否则,Srping会抛出一个Exception。