Java 自定义验证器停止spring内部验证

Java 自定义验证器停止spring内部验证,java,spring-mvc,Java,Spring Mvc,我创建了一个验证器来验证任何类的日期字段。我在控制器中自动连接了它的实例,并在控制器的方法中调用了它的validate()。一切正常 @RequestMapping(value = "/{pan}",method=RequestMethod.POST) public ModelAndView submitIfPANpresents(@ModelAttribute("command") @Valid PortfolioBean portfolio,bindingResult result){

我创建了一个验证器来验证任何类的日期字段。我在控制器中自动连接了它的实例,并在控制器的方法中调用了它的validate()。一切正常

@RequestMapping(value = "/{pan}",method=RequestMethod.POST)
public ModelAndView submitIfPANpresents(@ModelAttribute("command") @Valid  PortfolioBean portfolio,bindingResult result){
    dateValidator.validate(portfolio, result);
    if(result.hasErrors()){
        System.out.println(result.getErrorCount());
        return new ModelAndView("portfolioview");
    }
:
}
现在,我在控制器中创建了一个方法,将自定义验证器与WebDataBinder绑定。我这样做是希望不必显式调用validate()

@InitBinder
protected void initBinder(WebDataBinder binder) {
    binder.setValidator(dateValidator);
}
但一切都很顺利

现在,我对来自控制器方法的自定义验证器的validate()调用进行了注释,并测试了代码。我只能从自定义验证器中看到错误集。Spring的内部验证停止工作


我做错了什么或错过了什么?我的需要是,不要显式调用validate(),不要将xml中的validator绑定为额外的验证器。

当您执行
binder.setValidator(dateValidator)时
,您将Spring的验证器替换为
日期验证器
。这就是Spring的内部验证停止工作的原因


因此,如果您希望两个验证器都工作,您应该删除这一行并保留
dateValidator.validate(…)
。如果你想拥有一个额外的验证器,你别无选择。

我在某个地方读到“JSR 303内置注释在你注入了自己的验证器后什么都不做”:(有解决方案吗?我可以使用aspectJ或其他方式来实现吗?我希望它只在一次配置时自动运行。