我正在考虑将域对象用作@RequestBody。我的域对象是不可变对象,因此它们没有任何setter方法。它是一个application / json请求,我正在使用Jackson消息转换器。
@RequestMapping(value="/user", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.NO_CONTENT)
public @ResponseBody void createUser(@RequestBody User user) {
..........
}
由于我的用户对象中没有setter方法,当我向“/ user”发出POST请求时,我从MappingJacksonHttpMessageConverter获取UnrecognizedPropertyException。有没有一种方法在春天我可以使用用户对象的静态工厂方法(或构造函数)而不是setter来分配数据。
答案 0 :(得分:2)
我自己找到了答案。使用@JsonCreator。这是一个例子。您也可以在静态工厂方法上使用它。
@JsonCreator
public NonDefaultBean(@JsonProperty("name") String name, @JsonProperty("age") int age)
{
this.name = name;
this.age = age;
}
答案 1 :(得分:0)
我认为这取决于您的JSON解析器。我知道GSON [1]适用于字段(而不是getter / setter),因此使用它可能会有更好的运气。我相信你必须编写自己的消息转换器。