springMVC3.2 与 springMVC4.3配置mediaTypes的不一样之处

springMVC3.2 与 springMVC4.3配置mediaTypes的不一样之处html

 

替换springMVC版本为4.3之后运行项目提示错误

org.springframework.beans.NotWritablePropertyException: Invalid property 'mediaTypes' of bean class [org.springframework.web.servlet.view.ContentNegotiatingViewResolver]: Bean property 'mediaTypes' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter

错误缘由

是spring3.2以上开始不推荐使用setMediaTypes等直接设置这些数据, 而是经过ContentNegotiationManager(ContentNegotiationManagerFactoryBean),因此采用map标签的方式直接转换会出现异常信息。  
相关的方法在4.3版本上已经进行了移出操做。web

3.2xml配置

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="order" value="1" />
        <property name="mediaTypes">
            <map>
                <entry key="html"  value="text/html" />
                <entry key="xml"  value="application/html" />
                <entry key="json" value="application/json" />
            </map>
        </property>
        <property name="defaultViews">
            <list>
                <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
                </bean>
            </list>
        </property>
        <property name="ignoreAcceptHeader" value="true" />
    </bean>

4.3xml配置

<bean id="contentNegotiationManager"  class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
       <property name="favorParameter" value="true"/>
       <property name="parameterName" value="format"/>
       <property name="ignoreAcceptHeader" value="false"/>
       <property name="mediaTypes">
           <value>
                json=application/json
                xml=application/xml
                html=text/html
            </value>
       </property>
       <property name="defaultContentType" value="text/html"/>
    </bean>

ContentNegotiationManagerFactoryBean关于MediaType的相关方法 
这里写图片描述spring

相关文章
相关标签/搜索