27
27
import org .springframework .lang .Nullable ;
28
28
import org .springframework .validation .BindingResult ;
29
29
import org .springframework .validation .MessageCodesResolver ;
30
+ import org .springframework .validation .SmartValidator ;
30
31
import org .springframework .validation .beanvalidation .MethodValidationAdapter ;
31
32
import org .springframework .validation .method .MethodValidationResult ;
32
33
import org .springframework .validation .method .MethodValidator ;
@@ -144,7 +145,8 @@ public static MethodValidator from(
144
145
Predicate <MethodParameter > modelAttribitePredicate , Predicate <MethodParameter > requestParamPredicate ) {
145
146
146
147
if (initializer instanceof ConfigurableWebBindingInitializer configurableInitializer ) {
147
- if (configurableInitializer .getValidator () instanceof Validator validator ) {
148
+ Validator validator = getValidator (configurableInitializer );
149
+ if (validator != null ) {
148
150
MethodValidationAdapter adapter = new MethodValidationAdapter (validator );
149
151
adapter .setObjectNameResolver (objectNameResolver );
150
152
if (paramNameDiscoverer != null ) {
@@ -160,6 +162,17 @@ public static MethodValidator from(
160
162
return null ;
161
163
}
162
164
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
+
163
176
164
177
/**
165
178
* ObjectNameResolver for web controller methods.
0 commit comments