一、起因 
    从spring 3.1.0升级到spring 3.2.0时,配置文件servlet.xml中出错。

错误信息:

  1. java.lang.String cannot be cast to org.springframework.http.MediaType

错误原因:是spring3.2开始不推荐使用setMediaTypes等直接设置这些数据, 而是通过ContentNegotiationManager(ContentNegotiationManagerFactoryBean),所以采用map标签的方式直接转换会出现异常信息。

二、ContentNegotiatingViewResolver 解释

引用

三、配置实例 
1. spring 3.1.0

  1. <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
  2. <property name="ignoreAcceptHeader" value="true"/>
  3. <property name="defaultContentType" value="text/html"/>
  4. <property name="mediaTypes">
  5. <map>
  6. <entry key="json" value="application/json" />
  7. <entry key="xml" value="application/xml" />
  8. </map>
  9. </property>
  10. <property name="viewResolvers">
  11. <list>
  12. <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
  13. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  14. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  15. <property name="prefix" value="/WEB-INF/pages/"/>
  16. <property name="suffix" value=".jsp"></property>
  17. </bean>
  18. </list>
  19. </property>
  20. <property name="defaultViews">
  21. <list>
  22. <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
  23. <bean class="org.springframework.web.servlet.view.xml.MarshallingView" >
  24. <property name="marshaller">
  25. <bean class="org.springframework.oxm.xstream.XStreamMarshaller"/>
  26. </property>
  27. </bean>
  28. </list>
  29. </property>
  30. </bean>

2. spring 3.1.0/3.2.0

  1. <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
  2. <property name="ignoreAcceptHeader" value="true"/>
  3. <property name="defaultContentType" value="text/html"/>
  4. <property name="mediaTypes">
  5. <value>
  6. json=application/json,
  7. xml=application/xml
  8. </value>
  9. </property>
  10. <property name="viewResolvers">
  11. <list>
  12. <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
  13. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  14. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  15. <property name="prefix" value="/WEB-INF/pages/"/>
  16. <property name="suffix" value=".jsp"></property>
  17. </bean>
  18. </list>
  19. </property>
  20. <property name="defaultViews">
  21. <list>
  22. <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
  23. <bean class="org.springframework.web.servlet.view.xml.MarshallingView" >
  24. <property name="marshaller">
  25. <bean class="org.springframework.oxm.xstream.XStreamMarshaller"/>
  26. </property>
  27. </bean>
  28. </list>
  29. </property>
  30. </bean>

3. spring 3.2.0

  1. <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
  2. <property name="ignoreAcceptHeader" value="true"/>
  3. <property name="defaultContentType" value="text/html"/>
  4. <property name="contentNegotiationManager">
  5. <bean class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
  6. <property name="ignoreAcceptHeader" value="true"/>
  7. <property name="defaultContentType" value="text/html"/>
  8. <property name="mediaTypes">
  9. <map>
  10. <entry key="json" value="application/json" />
  11. <entry key="xml" value="application/xml" />
  12. </map>
  13. </property>
  14. </bean>
  15. </property>
  16. <property name="viewResolvers">
  17. <list>
  18. <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
  19. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  20. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  21. <property name="prefix" value="/WEB-INF/pages/"/>
  22. <property name="suffix" value=".jsp"></property>
  23. </bean>
  24. </list>
  25. </property>
  26. <property name="defaultViews">
  27. <list>
  28. <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
  29. <bean class="org.springframework.web.servlet.view.xml.MarshallingView" >
  30. <property name="marshaller">
  31. <bean class="org.springframework.oxm.xstream.XStreamMarshaller"/>
  32. </property>
  33. </bean>
  34. </list>
  35. </property>
  36. </bean>

4. spring 3.2.x (推荐)

    1. <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    2. <property name="ignoreAcceptHeader" value="true"/>
    3. <property name="defaultContentType" value="text/html"/>
    4. <property name="contentNegotiationManager">
    5. <bean class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    6. <property name="ignoreAcceptHeader" value="true"/>
    7. <property name="defaultContentType" value="text/html"/>
    8. <property name="mediaTypes">
    9. <props>
    10. <prop key="json">application/json</prop>
    11. <prop key="xml">application/xml</prop>
    12. </props>
    13. </property>
    14. </bean>
    15. </property>
    16. <property name="viewResolvers">
    17. <list>
    18. <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
    19. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    20. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    21. <property name="prefix" value="/WEB-INF/pages/"/>
    22. <property name="suffix" value=".jsp"></property>
    23. </bean>
    24. </list>
    25. </property>
    26. <property name="defaultViews">
    27. <list>
    28. <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
    29. <bean class="org.springframework.web.servlet.view.xml.MarshallingView" >
    30. <property name="marshaller">
    31. <bean class="org.springframework.oxm.xstream.XStreamMarshaller"/>
    32. </property>
    33. </bean>
    34. </list>
    35. </property>
    36. </bean>

spring-mvc 3.* 多视图解析配置实例 ContentNegotiatingViewResolver的更多相关文章

  1. spring mvc:内部资源视图解析器2(注解实现)@Controller/@RequestMapping

    spring mvc:内部资源视图解析器2(注解实现)  @Controller/@RequestMapping 访问地址: http://localhost:8080/guga2/hello/goo ...

  2. spring mvc:内部资源视图解析器(注解实现)@Controller/@RequestMapping

    spring mvc:内部资源视图解析器(注解实现)@Controller/@RequestMapping 项目访问地址: http://localhost:8080/guga2/hello/prin ...

  3. Spring MVC资源绑定视图解析器

    ResourceBundleViewResolver使用属性文件中定义的视图bean来解析视图名称. 以下示例显示如何使用Spring Web MVC框架中的ResourceBundleViewRes ...

  4. spring mvc: 资源绑定视图解析器(不推荐)

    spring mvc: 资源绑定视图解析器(不推荐) 不适合单控制器多方法访问,有知道的兄弟能否告知. 访问地址: http://localhost:8080/guga2/hello/index 项目 ...

  5. Spring MVC的多视图解析器配置及与Freemarker的集成

    一.从freemarker谈起 Freemarker使用模板技术进行视图的渲染.自从看了Struts标签.Freemarker.JSTL的性能对比后,我毅然决定放弃Struts标签了!效率太差…… S ...

  6. Spring MVC内部资源视图解析器

    InternalResourceViewResolver用于将提供的URI解析为实际URI.下面的示例演示如何在Spring Web MVC框架中使用SpringResultViewResolver. ...

  7. Spring MVC开发环境的搭建和实例

    一.安装jdk 二.安装tomcat 三.安装maven 新增环境变量MAVEN-HOME,并在path变量中添加bin路径 四.安装IntelliJ IDEA 五.创建maven web项目选择jd ...

  8. 转载 Spring、Spring MVC、MyBatis整合文件配置详解

    Spring.Spring MVC.MyBatis整合文件配置详解   使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...

  9. Spring MVC 数据模型与视图

      从控制器获取数据后,会装载数据到数据模型和视图中,然后将视图名称转发到视图解析器中,通过解析器解析后得到最终视图,最后将数据模型渲染到视图中,展示最终的结果给用户. 用ModelAndView来定 ...

随机推荐

  1. Transposed Convolution 反卷积

    Transposed convolutions也称作fractionally strided convolutions(本人比较喜欢这个称呼,比较直观),Upconvolution,deconvolu ...

  2. [BZOJ1299]巧克力棒(博弈论,线性基)

    [BZOJ1299]巧克力棒 Description TBL和X用巧克力棒玩游戏.每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度.TBL先手两人轮流,无法操作的人输. ...

  3. 查看mysql数据库容量大小

     第一种情况:查询所有数据库的总大小,方法如下: mysql> use information_schema; mysql> select concat(round(sum(DATA_LE ...

  4. MongoDB实现增删查方法

    1.添加信息 public void addInfo(Infomation infomation) { try{ // TODO Auto-generated method stub //连接Mong ...

  5. 集合综合练习<一>

    1208421001,关羽,数学,93 1208421001,关羽,英语,88 1208421002,张飞,语文,82 1208421002,张飞,数学,83 1208421002,张飞,英语,89 ...

  6. 【LuoguP4433】[COCI2009-2010#1] ALADIN(含类欧几里得算法推导)

    题目链接 题意简述 区间赋值模意义下等差数列,询问区间和 \(N\leq 10^9,Q\leq 10^5\) Sol 每次操作就是把操作区间\([L,R]\)中的数赋值成: \[(X-L+1)*A\ ...

  7. Hibernate基本原理理解

    什么是Hibernate? Hibernate,翻译过来是冬眠的意思,正好现在已经进入秋季,世间万物开始准备冬眠了.其实对于对象来说就是持久化. 扫盲------------------------- ...

  8. 【NOIP2016提高A组五校联考2】tree

    题目 给一棵n 个结点的有根树,结点由1 到n 标号,根结点的标号为1.每个结点上有一个物品,第i 个结点上的物品价值为vi. 你需要从所有结点中选出若干个结点,使得对于任意一个被选中的结点,其到根的 ...

  9. python语言特性简要记载

    1.python是解释型语言,而c,c++等是编译型语言. 2.python是动态类型语言,这意味着你不需要在声明变量时指定类型. 3.Python是面向对象语言,所有允许定义类并且可以继承和组合.P ...

  10. vue 设置 input 为不可以编辑

    我用最笨的方法,先实现功能先,用两个input,一个可以编辑,一个不可以编辑,失去焦点后隐藏可以点击的那个,点"编辑"时,显示可以编辑的那个input <div class= ...