Skip to content

Commit

Permalink
Unwrap validator if necessary in HandlerMethodValidator
Browse files Browse the repository at this point in the history
  • Loading branch information
rstoyanchev committed Aug 23, 2023
1 parent 9b4ecdb commit 832b49f
Showing 1 changed file with 14 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.springframework.lang.Nullable;
import org.springframework.validation.BindingResult;
import org.springframework.validation.MessageCodesResolver;
import org.springframework.validation.SmartValidator;
import org.springframework.validation.beanvalidation.MethodValidationAdapter;
import org.springframework.validation.method.MethodValidationResult;
import org.springframework.validation.method.MethodValidator;
Expand Down Expand Up @@ -144,7 +145,8 @@ public static MethodValidator from(
Predicate<MethodParameter> modelAttribitePredicate, Predicate<MethodParameter> requestParamPredicate) {

if (initializer instanceof ConfigurableWebBindingInitializer configurableInitializer) {
if (configurableInitializer.getValidator() instanceof Validator validator) {
Validator validator = getValidator(configurableInitializer);
if (validator != null) {
MethodValidationAdapter adapter = new MethodValidationAdapter(validator);
adapter.setObjectNameResolver(objectNameResolver);
if (paramNameDiscoverer != null) {
Expand All @@ -160,6 +162,17 @@ public static MethodValidator from(
return null;
}

@Nullable
private static Validator getValidator(ConfigurableWebBindingInitializer initializer) {
if (initializer.getValidator() instanceof Validator validator) {
return validator;
}
if (initializer.getValidator() instanceof SmartValidator smartValidator) {
return smartValidator.unwrap(Validator.class);
}
return null;
}


/**
* ObjectNameResolver for web controller methods.
Expand Down

0 comments on commit 832b49f

Please sign in to comment.