开发者社区 问答 正文

spring mvc方法mapping的两个小问题

奇怪,如果我的方法签名这样写:
@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

展开
收起
a123456678 2016-03-17 10:56:55 2840 分享 版权
1 条回答
写回答
取消 提交回答
  • 第一个,看reference说应该这样写: produces = "applicatoin/json"
    charset=UTF-8这部分写个字符过滤器不就好了,不用每个方法都写上吧 contenttype 这玩意我一直没使用过,返回json 就用@RequestBody就可以了。

    2019-07-17 19:04:49
    赞同 展开评论