我有一个控制器的通用模型。取决于执行的操作,我必须以不同的方式验证模型。换句话说,在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;
}
}
}