Spring MVC @Valid Validation with custom HandlerMethodArgumentResolver
Nice description of the issue that you are facing.
I checked out the code that you have outlined and have come to the same conclusion that you have - there is no built-in way to have both a custom HandlerMethodArgumentResolver
as well as @Valid
related validation applied at the same time, the only choice is to do what the ModelAttributeMethodProcessor
does which is to check if the parameter has a @Valid
annotation and call the validation logic related code.
You can probably derive your HandlerMethodResolverArgumentResolver
from ModelAttributeMethodProcessor
and call super.validateIfApplicable(..)
atleast this way the existing code is leveraged.
It's may be too late, but your HandlerMethodArgumentResolver
gets WebDataBinderFactory
object as last argument, then, to hook up the validation, simply add this to your resolver implementation:
Object resolvedObject = // your logic
if(parameter.hasParameterAnnotation(Valid.class){
binderFactory.createBinder(webRequest,resolvedObject,"resolvedObjectLogicalName").validate ();
}