Spring MVC @ Valid Validation con HandlerMethodArgumentResolver personalizado

Quiero registrar una costumbreHandlerMethodArgumentResolver que podria manejar lo siguiente@Controller definición del método del controlador

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

Puedo registrar mi resolución, lo que crea unDomain objeto a través de los parámetros de solicitud, anulandoaddArgumentResolver() desdeWebMvcConfigurerAdapter. Cuando la primavera intenta resolver elDomain Parámetro, pasa por su lista deHandlerMethodArgumentResolver (hay muchos) y elige el primero quesupports() eso.

En el ejemplo anterior, aunque mi resolutor será llamado y miDomain el argumento se inicializará, el@Valid la anotación no habrá sido procesaday el resolver paraBindingResult, unErrorsMethodArgumentResolver fallará porque requiere una@ModelAttribute, @RequestBody o la@RequestPart argumento en el método de controlador, que no tengo.

Si intento arreglarlo agregando@ModelAttribute

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

a HandlerMethodArgumentResolver implementación,ModelAttributeMethodProcessor, será revisado primero consupports() y resolver el argumento (con@ModelAttribute y@Valid) antes de mi resolución personalizada. losBindingResult no fallará, pero no tendré mi comportamiento de creación personalizado en elDomain ejemplo.

Podría copiar y pegar el código para validarlo y agregarlo al modelo que está enModelAttributeMethodProcessor, pero esperaba que hubiera una manera más fácil de resolver mis parámetros y realizar la validación sin agregar un objeto al modelo. ¿Hay tal manera?

Respuestas a la pregunta(2)

Su respuesta a la pregunta