在Spring MVC中配置多个视图解析器优先级

问题

在Spring MVC应用程序中,通常,您可能很少应用视图解析器策略来解析视图名称。 例如,将三个视图解析器组合在一起: InternalResourceViewResolverResourceBundleViewResolverXmlViewResolver

<beans ...>
	<bean class="org.springframework.web.servlet.view.XmlViewResolver">
	      <property name="location">
	         <value>/WEB-INF/spring-views.xml</value>
	      </property>
	</bean>

	<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
	      <property name="basename" value="spring-views" />
	</bean>
	
	<bean id="viewResolver"
	      class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
              <property name="prefix">
                 <value>/WEB-INF/pages/</value>
              </property>
              <property name="suffix">
                 <value>.jsp</value>
              </property>
        </bean>
</beans>

但是,如果返回了视图名称,将使用哪种视图解析器策略?

如果应用了多个视图解析器策略,则必须通过“ order ”属性声明优先级,其中较低的顺序值具有较高的优先级 ,例如:

<beans ...>
	<bean class="org.springframework.web.servlet.view.XmlViewResolver">
	     <property name="location">
	        <value>/WEB-INF/spring-views.xml</value>
	     </property>
	     <property name="order" value="0" />
	</bean>

	<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
	     <property name="basename" value="spring-views" />
	     <property name="order" value="1" />
	</bean>
	
	<bean id="viewResolver"
	      class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
              <property name="prefix">
                 <value>/WEB-INF/pages/</value>
              </property>
              <property name="suffix">
                 <value>.jsp</value>
              </property>
	      <property name="order" value="2" />
        </bean>
</beans>

现在,如果返回了视图名称,则视图解析策略将按以下顺序工作:

XmlViewResolver --> ResourceBundleViewResolver --> InternalResourceViewResolver

注意
InternalResourceViewResolver必须始终分配最低优先级 (最大订单号),因为无论返回什么视图名称,它都会解析视图。 这导致其他视图解析器如果优先级较低,则没有机会解析视图。

下载源代码

下载它– SpringMVC-ViewResolver-Priority-Example.zip (7KB)

参考文献

  1. Spring MVC InternalResourceViewResolver示例
  2. Spring MVC XmlViewResolver示例
  3. Spring MVC ResourceBundleViewResolver示例

翻译自: https://mkyong.com/spring-mvc/configure-multiple-view-resolvers-priority-in-spring-mvc/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值