У меня есть класс контроллера, который регистрирует пользовательский валидатор, а другой контроллер расширяет его и добавляет определенный валидатор.
Я не могу добавить аннотацию @Valid к параметру переопределенного метода, потому что он не будет компилироваться (нарушает принцип Лискова)
Почему, когда я нажимаю переопределенный метод в SpecificController
, валидаторы не вызываются? Как это исправить?
@Controller
public class SuperController {
@Inject
private ValidatorFromSuper validatorFromSuper;
@InitBinder
public void initBinder(HttpServletRequest request, WebDataBinder binder){
registerValidators(binder);
}
protected void registerValidators(WebDataBinder binder) {
binder.setValidator(validatorFromSuper);
}
@RequestMapping(...)
public String handleCreation(@Valid @ModelAttribute("myWebModel") MyWebModel myWebModel,
BindingResult bindingResult ,.....){
...
}
}
@Controller
public class SpecificController extends SuperController{
@Inject
private SpecificValidator specificValidator;
@Override
protected void registerValidators(WebDataBinder binder) {
super.registerValidators(binder);
binder.addValidators(specificValidator);
}
@Override
public String handleCreation(@ModelAttribute("myWebModel") MyWebModel myWebModel,
BindingResult bindingResult ,.....){
...
}
}