springmvc如何設定多檢視器(ViewResolver)
阿新 • • 發佈:2019-02-11
下面以jsp、freemarker舉例:
<!--配置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。