不同操作中相同模型的不同验证器,@ InitBinder和Spring Portlet MVC

时间:2015-03-13 17:31:10

标签: java spring validation spring-portlet-mvc

我有一个控制器的通用模型。取决于执行的操作,我必须以不同的方式验证模型。换句话说,在action1中我想拥有validator1,而在action2中我想拥有validator2。

我将@InitBinder与@ActionMapping名称一起使用。不幸的是,验证没有执行。我在@InitBinder中使用的名称可能有问题。

@Controller
@SessionAttributes("model")
public class Controller {

    @Autowired
    @Qualifier("validator1")
    private Validator validator1;

    @Autowired
    @Qualifier("validator2")
    private Validator validator2;

    @InitBinder("action1")
    private void initAction1(WebDataBinder binder) {
        binder.setValidator(validator1);
    }

    @InitBinder("action2")
    private void initAction2(WebDataBinder binder) {
        binder.setValidator(validator2);
    }

    @ActionMapping("action1")
    public void action1(@ModelAttribute("model") @Valid Model model, BindingResult result) {        
        if (result.hasErrors()) {
            return;
        }
    }

    @ActionMapping("action2")
    public void action2(@ModelAttribute("model") @Valid Model model, BindingResult result) {        
        if (result.hasErrors()) {
            return;
        }
    }

}

0 个答案:

没有答案