spring-mvc 3.* 多视图解析配置实例 ContentNegotiatingViewResolver

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

错误信息: 

Java代码  收藏代码
  1. java.lang.String cannot be cast to org.springframework.http.MediaType  



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

二、ContentNegotiatingViewResolver 解释 

引用




三、配置实例 
1. spring 3.1.0 

Xml代码  收藏代码
  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 

Xml代码  收藏代码
  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 

Xml代码  收藏代码
  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 (推荐) 

Xml代码  收藏代码
    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>  
posted @ 2018-04-10 21:43  ƃuədnxıəʍ  阅读(264)  评论(0编辑  收藏  举报