基本上我希望能够阻止Spring检查我的字段是否包含错误数据,而是让我手动处理所有验证和异常。
假设我有一个班级:
public class MyClass {
int aNumber;
}
和控制器:
@Controller
public class MyController {
@Autowired
private MyValidator validator;
public MyClass() {}
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setValidator(validator);
}
@RequestMapping(value="/postsomething", method=RequestMethod.POST)
public ModelAndView onPost(@ModelAttribute("myObject") MyClass myObject, BindingResult result) {
validator.validate(myObject, result);
if (result.hasErrors()) {
return "postsomething";
}
return "redirect:success";
}
最后是验证者:
public class MyValidator implements Validator {
@Override
public void validate(Object target, Errors errors) {
MyClass myObject = (MyClass) target;
if (someCondition) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "aNumber", "error.myclass.anumber.null");
}
}
}
关键是我只想在someCondition
为真的情况下从MY验证器显示一次错误消息。但是,如果我将我的表单中的port字段留空,那么无论如何,它还会显示Spring的错误消息for typeMismatch。
我可以禁用typeMismatch错误,还是应该以其他方式解决所有这些问题?