Пользовательская проверка Spring MVC в переопределенном методе контроллера не работает - PullRequest
0 голосов
/ 30 октября 2018

У меня есть класс контроллера, который регистрирует пользовательский валидатор, а другой контроллер расширяет его и добавляет определенный валидатор.

Я не могу добавить аннотацию @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 ,.....){
           ...
    }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...