spring mvc方法mapping的两个小问题

Catelyn 发布于 2014/06/30 17:34
阅读 728
收藏 1
奇怪,如果我的方法签名这样写: 
@RequestMapping(value = "/admin/blog/catalog/save", method = RequestMethod.POST, produces = "applicatoin/json;charset=UTF-8") 
报错,为406 notacceptable,如果我把注解的produces属性去掉则正确,但是后台日志写的也是application/json,如下: 
Written [{message=success}] as "application/json;charset=UTF-8" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@194bd83] 

真怪!!!

另外一个:

还有一个接收参数的地方想不通,我用的ajax form提交,所以contenttype为:Content-Type:application/x-www-form-urlencoded; charset=UTF-8(由于插件限制,提交的格式不是json格式) 
那么如果我加@RequestBody是后台报not support mediatype,这个我明白,后台默认注册的httpmessageconverter没有支持这个contenttype的,但是如果我加modelattribute或者干脆什么都不加像这样: 
public Map saveCatalog(Catalog catalog){...} 
接收正常。 
问题:什么都不加的时候是怎么绑定参数的,后台debug log没打!

BTW:提交的参数为form格式,即XXX:XXX

加载中
0
Catelyn
Catelyn
第一个明白了,看reference说应该这样写: produces = "applicatoin/json"
小小志
小小志
modelattribute意思是返回的Model中把此对象加进去,什么都不写是根据对象的属性名匹配的,即Catalog类里面的属性和你的请求参数匹配
0
NotFoundException
NotFoundException
charset=UTF-8这部分写个字符过滤器不就好了,不用每个方法都写上吧 contenttype 这玩意我一直没使用过,返回json 就用@RequestBody就可以了。
返回顶部
顶部