如何禁用Spring的“typeMismatch”异常? - Spring MVC

时间:2015-11-30 14:36:58

标签: java spring spring-mvc

基本上我希望能够阻止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错误,还是应该以其他方式解决所有这些问题?

0 个答案:

没有答案