Spring MVC视图解析器:配置多个视图解析器的优先级

问题

在Spring MVC应用程序中,我们经常需要应用一些视图解析器策略来解析视图名称。例如,联合使用三个视图解析器:InternalResourceViewResolver、ResourceBundleViewResolver和XmlViewResolver。

但是,如果返回了一个视图的名称,那么,使用哪一个视图解析器策略?

解决方法

如果应用了多个视图解析器策略,那么就必须通过“order”属性来声明优先级,order值越低,则优先级越高。例如:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

<?xml version="1.0" encoding="UTF-8" ?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"

       xmlns:context="http://www.springframework.org/schema/context"

       xmlns:mvc="http://www.springframework.org/schema/mvc"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

       http://www.springframework.org/schema/context

       http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

 

    <!-- 扫描web包,应用Spring的注解 -->

    <context:component-scan base-package="com.xxx.training"/>

 

 

    <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">

        <property name="basename">

            <value>spring-views</value>

        </property>

        <property name="order" value="0" />

    </bean>

 

    <bean class="org.springframework.web.servlet.view.XmlViewResolver">

        <property name="location">

            <value>/WEB-INF/spring-views.xml</value>

        </property>

        <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>

  注意:InternalResourceViewResolver必须总是赋予最低的优先级(最大的order值),因为不管返回什么视图名称,它都将解析视图。如果它的优先级高于其它解析器的优先级的话,它将使得其它具有较低优先级的解析器没有机会解析视图。

时间: 2024-08-03 10:34:16

Spring MVC视图解析器:配置多个视图解析器的优先级的相关文章

spring mvc拦截jsp文件,jsp未被解析

问题描述 spring mvc拦截jsp文件,jsp未被解析 采用spring mvc 对jsp文件进行拦截,在preHandle方法里面返回true,结果页面展示的是jsp的源码,而不是我要展示的内容,这是什么原因?如下所示: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib pre

ajax spring-ajax方式提交表单,spring mvc的Controller中怎么不能返回视图

问题描述 ajax方式提交表单,spring mvc的Controller中怎么不能返回视图 ajax请求到springmvc的Controller后,请求成功后为什么不跳转到jsp?就是这句:return new ModelAndView(""/sys/selectAccount"");不用ajax请求就可以 解决方案 使用ajax提交的请求 控制器中的重定向 或者请求转发都是无效的 ajax要跳转页面 只能把你要跳转的页面发送到前端 前端ajax的回调函数使用前

mvc注解-spring MVC注解 + hibernate +jpa配置 出错 具体如下

问题描述 spring MVC注解 + hibernate +jpa配置 出错 具体如下 这个是错误 No unique bean of type [javax.persistence.EntityManagerFactory] is defined: expected single bean but found 0 下面为XML配置文件 web.xml 导入hibernate <filter> <filter-name>openEntityManagerInViewFilter&

Spring MVC 多数据源,配置完事务之后就不能正常切换数据源,求大神指点

问题描述 Spring MVC 多数据源,配置完事务之后就不能正常切换数据源,求大神指点 两张附图事务没配置的时候数据源切换正常,加上事务之后就一直显示的是默认连接的数据源, 这是为什么啊??百思不得其解,,求神哥神姐解惑啊 这个是数据源切换代码 切换的时候就是 每次在掉底层方法之前先设置下数据库 向下面这样 MultipleDataSource.setDataSourceKey("yz_dataSource"); MultipleDataSource.setDataSourceKey

Spring MVC框架的高级配置

高级 本文将为您提供关于Spring MVC框架的配置技巧,以帮助管理基于Spring的web应用程序的多个实例.本配置管理主题常被学术界所忽略,但是,这对于现实的web开发尤为重要.本主题并不直接关联任何具体的技术,因此,我们将从最基本的概念开始对这个问题进行说明.下面,我们将根据Spring MVC框架,为基于本技术开发的项目提供一系列的解决方案. Spring配置 人们经常会在一台以上的主机上配置一种Web应用程序.例如,在生产中,一个网站可能只有一个实例.除了此实例外,开发人员可以在用于

spring mvc 返回json的配置

转载自:http://my.oschina.net/haopeng/blog/324934 springMVC-servlet.xml 配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

Spring MVC完全注解方式配置web项目_java

在servlet 3.0 开始web项目可以完全不需要web.xml配置文件了,所以本文的配置只在支持servlet 3.0及以上的web容器中有效 使用的是spring mvc (4.3.2.RELEASE) + thymeleaf(3.0.2.RELEASE), 持久层使用的 spring的 JdbcTemplate, PS:推荐一个很好用的对JdbcTemplate封装的框架:https://github.com/selfly/dexcoder-assistant  . 下面开始具体的配置

spring mvc如何给controller 配置指定的interceptor

问题描述 例如系统中有些controller需要验证是否登录,有些需要验证是否有权限访问,而其他的controller是不需要进行任何验证就可以访问的,这种情况该怎么配置interceptor? <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors">

Spring MVC 中自定义视图 @Component 及 配置 多个视图解析器 Excel视图

首先我们建立一个自己的View实现View接口.要注意在类上面加上@Component的注解,因为看BeanNameViewResolver的源码知道,是直接从ioc容器里面拿的根据名字拿的视图,所以我们得把我们自己写的视图放到容器里面. HelloView.java package com.hust.springmvc.views; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServle

《精通Spring MVC 4》——1.5 那就正式开始吧

1.5 那就正式开始吧 现在Web应用已经准备就绪,先看一下它是如何编写的.在进一步学习之前,我们可以将工作的成果保存到Git上. 在Windows下,需要安装Git bash,这可以在https://msysgit.github.io找到.在Mac下,如果你使用homebrew的话,很可能已经安装过Git了,否则的话,使用brew install git命令来进行安装. 如果要使用Git版本化我们的工作内容,那么可以在控制台中输入如下的命令: $ cd app $ git init 使用Int