Spring MVC @ Valid Validation z niestandardowym HandlerMethodArgumentResolver

Chcę zarejestrować zwyczajHandlerMethodArgumentResolver które mogłyby obsłużyć następujące@Controller definicja metody obsługi

@RequestMapping(method = RequestMethod.POST)
public String createDomain(@Valid Domain domain, BindingResult errors, @RequestParam("countryId") Long countryId) {

Mogę zarejestrować mój resolver, który po prostu tworzyDomain obiekt poprzez parametry żądania, przez przesłanianieaddArgumentResolver() zWebMvcConfigurerAdapter. Kiedy Spring próbuje rozwiązaćDomain parametr, przechodzi przez jego listęHandlerMethodArgumentResolver (jest ich dużo) i wybiera pierwszysupports() to.

W powyższym przykładzie, mój resolver zostanie wywołany i mójDomain argument zostanie zainicjowany@Valid adnotacja nie została przetworzonai przelicznik dlaBindingResult, anErrorsMethodArgumentResolver nie powiedzie się, ponieważ wymaga@ModelAttribute, @RequestBody albo@RequestPart argument w metodzie obsługi, której nie mam.

Jeśli spróbuję to naprawić dodając@ModelAttribute

@RequestMapping(method = RequestMethod.POST)
public String createDomain(@Valid @ModelAttribute Domain domain, BindingResult errors, @RequestParam("countryId") Long countryId) {

a HandlerMethodArgumentResolver realizacja,ModelAttributeMethodProcessor, zostanie najpierw sprawdzonysupports() i rozwiń argument (za pomocą@ModelAttribute i@Valid) przed moim niestandardowym tłumaczeniem. TheBindingResult nie zawiedzie, ale nie będę mieć niestandardowego zachowania podczas tworzeniaDomain instancja.

Mógłbym po prostu skopiować i wkleić kod w celu sprawdzenia poprawności i dodania do modelu, który jest wModelAttributeMethodProcessor, ale miałem nadzieję, że istnieje łatwiejszy sposób na rozwiązanie moich parametrów i sprawdzenie poprawności bez dodawania obiektu do modelu. Czy istnieje taki sposób?

questionAnswers(2)

yourAnswerToTheQuestion