我正在使用MappingJackson2HttpMessageConverter将json字符串从请求正文转换为我控制器中的POJO。
所以,例如: 请求:
{ "someToken" : "23434" }
POJO:
class SomeForm {
@NotNull
private Long someToken;
// getters and setters
}
控制器:
public class SomeController {
@RequestMapping
public String makeRequest(@Valid SomeForm someForm, BindingResult bindingResult) {
return someSuccessOrErrorCodesInJsonFormat;
}
}
如果发送的数据正确,一切正常。 如果数据为null,那么一切都按预期工作,即bindingResult对象包含有关该错误的错误。
但如果数据不正确,即JSON中会有一些字母而不是数字, json转换器将抛出异常,因此服务器将响应500 http响应代码和一些带有异常堆栈跟踪的html。
据我所知,转换器和活页夹的工作方式如下: 1)转换器从json创建一个对象(这里发生异常) 2)Binder再次检查对象注释
是否可以改变json转换器的行为? 例如,如果它不能转换字段,它会将其保留为null,而不是抛出异常吗?
基本上,我需要一个像:
这样的请求{ "someToken" : "asdfasdf" }
使用someToken = null和使用该对象调用的控制器方法构造一个SomeForm对象。
你可以给我一些建议吗? 任何帮助将非常感谢!提前谢谢。