当使用@JsonProperty注释时,JSON转换为模型对象失败,如下所示:
Controller class snippet:
@RequestMapping( value = "/show", method = RequestMethod.POST)
public String doControl(@ModelAttribute User user, HttpServletRequest request ){
return user.getId();
}
Model class snippet:
public User{
@JsonProperty("user_id")
private id;
@JsonProperty("user_name")
private name;
//getters and setters
}
当我传递带有{"user_id":1, "user_name":"foo" }
请求的{jon POST
User
字段为null
时。 Jsonproperty注释在使用ModelAttribute注释时是否有效?
答案 0 :(得分:1)
它适用于@RequestBody
。使用@RequestBody
,您可以向Spring MVC指定带注释的对象位于HTTP请求的正文中。 Spring MVC将尝试使用适当的HTTPMessageConverter解码对象 - 您希望它为json使用消息转换器,因此您的POST请求应包含正确的Content-Type标头(例如Content-Type: application/json
)。
如果未指定@RequestBody
Spring MVC将尝试使用请求参数填充对象(例如,就像您提交了常规的HTTP POST表单一样)。
因此:
public String doControl(@RequestBody User user, HttpServletRequest request ){...}