Skip to content

Commit 35ba53e

Browse files
committed
Unwrap validator if necessary in HandlerMethodValidator
See gh-31082
1 parent 942800e commit 35ba53e

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

spring-web/src/main/java/org/springframework/web/method/annotation/HandlerMethodValidator.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.springframework.lang.Nullable;
2828
import org.springframework.validation.BindingResult;
2929
import org.springframework.validation.MessageCodesResolver;
30+
import org.springframework.validation.SmartValidator;
3031
import org.springframework.validation.beanvalidation.MethodValidationAdapter;
3132
import org.springframework.validation.method.MethodValidationResult;
3233
import org.springframework.validation.method.MethodValidator;
@@ -144,7 +145,8 @@ public static MethodValidator from(
144145
Predicate<MethodParameter> modelAttribitePredicate, Predicate<MethodParameter> requestParamPredicate) {
145146

146147
if (initializer instanceof ConfigurableWebBindingInitializer configurableInitializer) {
147-
if (configurableInitializer.getValidator() instanceof Validator validator) {
148+
Validator validator = getValidator(configurableInitializer);
149+
if (validator != null) {
148150
MethodValidationAdapter adapter = new MethodValidationAdapter(validator);
149151
adapter.setObjectNameResolver(objectNameResolver);
150152
if (paramNameDiscoverer != null) {
@@ -160,6 +162,17 @@ public static MethodValidator from(
160162
return null;
161163
}
162164

165+
@Nullable
166+
private static Validator getValidator(ConfigurableWebBindingInitializer initializer) {
167+
if (initializer.getValidator() instanceof Validator validator) {
168+
return validator;
169+
}
170+
if (initializer.getValidator() instanceof SmartValidator smartValidator) {
171+
return smartValidator.unwrap(Validator.class);
172+
}
173+
return null;
174+
}
175+
163176

164177
/**
165178
* ObjectNameResolver for web controller methods.

0 commit comments

Comments
 (0)