mediaTypes错误(Bean property 'mediaTypes' is not writable or has an invalid setter method.)
来源:互联网 发布:google tensorflow教程 编辑:程序博客网 时间:2024/04/27 17:48
ERROR:Bean property 'mediaTypes' is not writable or has an invalid setter method. Does theparameter type of the setter match the return type of the getter?
后续spring版本中的mediaTypes居然不支持setter方法了
错误描述
一般的为了使用Json,对其配置:
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<propertyname="order"value="1"/>
<propertyname="mediaTypes">
<map>
<entrykey="html"value="text/html"/>
<entrykey="xml"value="application/html"/>
<entrykey="json"value="application/json"/>
</map>
</property>
<propertyname="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
</bean>
</list>
</property>
<propertyname="ignoreAcceptHeader"value="true"/>
</bean>
结果是会出现上述错误提示:Bean property'mediaTypes' is not writable or has an invalid setter method. Does theparameter type of the setter match the return type of the getter?
意思是ContentNegotiatingViewResolver中不再支持mediaTypes的setter方法了。究其原因,是因为ContentNegotiatingViewResolver的setMediaTypes(Map<String,String>mediaTypes)方法已经被弃用(deprecated),不仅如此,一同被deprecated的的还有setFavorPathEctension 、setFavorParameter、setIgnoreAcceptHeader等方法,但是,这些方法都转移到了ContentNegotiationManager中了,为此,要想对其使用,可以转换为对ContentNegotiationManager的配置。
另外,对于数据形式的多种形式表述(html/xml/json/pdf/excel),Spring有两种表述形式:
・ org.springframework.web.servlet.view.ContentNegotiatingViewResolver
・ org.springframework.http.converter.HttpMessageConverte
ContentNegotiatingViewResolver虽然是ViewResolver一族的,但是并不解析视图,而是将其委托给其他的ViewResolver。
介于spring的两种表述方法,但是ContentNegotiatingViewResolver弃用了setMediaTypes,所以用contentNegotiationManager替换,但是配置contentNegotiationManager是通过ContentNegotiationManagerFactoryBean来实现的,所以,选择第一种办法,要对ContentNegotiationManagerFactoryBean进行配置。
所以,在这里,呈现不同格式的数据可以有两种办法:ContentNegotiationManager和HttpMessageConverter
解决方法
首先在pom.xml文件中加入依赖,然后对其选择一种配置方案即可成功,亲测有用。
加入依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.4</version>
</dependency>
方法1:配置ContentNegotiationManager
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<propertyname="favorParameter"value="true"/>
<propertyname="parameterName"value="format"/>
<propertyname="ignoreAcceptHeader"value="false"/>
<propertyname="mediaTypes">
<value>
json=application/json
xml=application/xml
</value>
</property>
<propertyname="defaultContentType"value="text/html"/>
</bean>
方法2:配置HttpMessageConverter
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
友情链接:http://www.tuicool.com/articles/N3Mfeim
- mediaTypes错误(Bean property 'mediaTypes' is not writable or has an invalid setter method.)
- Bean property 'loginDAO' is not writable or has an invalid setter method
- Bean property 'service' is not writable or has an invalid setter method. Did you mean 'serivce'?
- Bean property 'xxx' is not writable or has an invalid setter method
- 错误信息:Bean property 'sessionFactory' is not writable or has an invalid setter method.
- Bean property 'annotatedClasses' is not writable or has an invalid setter method
- Bean property 'adminService' is not writable or has an invalid setter method
- Bean property XX' is not writable or has an invalid setter method
- spring中XML中Bean property 'dataSource' is not writable or has an invalid setter method.
- Bean property 'xxx' is not writable or has an invalid setter method
- 错误信息:Bean property 'sessionFactory' is not writable or has an invalid setter method.
- Bean property 'manualPaperService' is not writable or has an invalid setter method. Did you mean 'ma
- Bean property 'addressService' is not writable or has an invalid setter method.
- 报错:Bean property 'jdbcTemplate' is not writable or has an invalid setter method
- Bean property 'productService' is not writable or has an invalid setter method. Does the parameter t
- Bean property 'sessionFactory' is not writable or has an invalid setter method
- Bean property 'interceptorDao' is not writable or has an invalid setter method. Did you mean 'interc
- Bean property 'sqlSessionTemplate' is not writable or has an invalid setter method. Does the paramet
- 注解
- PHP学习之--表单与验证
- 安装Anaconda3从而安装seaborn库
- 用例图详解
- java enum枚举的用法
- mediaTypes错误(Bean property 'mediaTypes' is not writable or has an invalid setter method.)
- 学习CSS你必须踩得那些坑(六)
- 第一章:spring整体架构与环境搭建
- 微信QQ返回按钮监听
- 自定义ScrollView实现Toolbar(标题栏)渐变
- css3伪类选择器使用总结
- Centos7 下安装redis 3.2.6
- java数组
- Spring基础之属性注入总结