У меня есть одна общая модель контроллера. В зависимости от выполненного действия я должен проверить модель по-другому. Другими словами, в действии1 я хочу иметь валидатор1, а в действии2 я хочу иметь валидатор2.
Я использовал @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;
}
}
}