我有经典的 Spring MVC 应用程序。
我想使用相应的 Java Bean 验证表单,并使用 JSR-303 验证注释进行注释。
表单数据由使用 JSON 的 ajax 调用发送。这个 Json 被 Jackson 转换为目标 Java Bean - 由 spring 自动转换:
@RequestMapping(value = ControllerConstants.CALCULATION_MAPPING_SUBMIT_FORM,method = RequestMethod.POST)
public String submitForm(@Valid @RequestBody MyFormBean bean, final BindingResult result) {
...
}
问题是,例如,如果我的 bean 中有一个 Integer 字段,但在 JSON 中,值不是数字。在这种情况下,它无法创建无法验证的目标 bean。这种情况无法使用自定义属性编辑器解决,因为无法将不代表整数的文本转换为整数。
似乎这在 Grails 中得到了解决,我们从验证器中得到错误(错误是域对象),它必须在数据绑定期间创建。所以我假设 spring 支持这一点,因此 Grails 只使用 Spring 的支持)
那么如何优雅地解决这种情况来处理这个“验证”错误呢?
更新
实际上我想通了,如果我们使用简单的表单提交,这就是spring支持的。问题在于杰克逊反序列化的集成。它不会填充错误。仍然如何解决这个问题?