Skip to content

Commit 826057b

Browse files
committed
Expose convenience method in MVC Java config
The new method allows modifying or overriding the ConfigurableWebBindingInitializer instance used for data binder initialization. Issue: SPR-8984
1 parent 3a1dd20 commit 826057b

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
5757
import org.springframework.web.HttpRequestHandler;
5858
import org.springframework.web.accept.ContentNegotiationManager;
59+
import org.springframework.web.bind.WebDataBinder;
5960
import org.springframework.web.bind.annotation.ExceptionHandler;
6061
import org.springframework.web.bind.annotation.ResponseStatus;
6162
import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
@@ -351,11 +352,6 @@ protected void configureDefaultServletHandling(DefaultServletHandlerConfigurer c
351352
*/
352353
@Bean
353354
public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
354-
ConfigurableWebBindingInitializer webBindingInitializer = new ConfigurableWebBindingInitializer();
355-
webBindingInitializer.setConversionService(mvcConversionService());
356-
webBindingInitializer.setValidator(mvcValidator());
357-
webBindingInitializer.setMessageCodesResolver(getMessageCodesResolver());
358-
359355
List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<HandlerMethodArgumentResolver>();
360356
addArgumentResolvers(argumentResolvers);
361357

@@ -365,7 +361,7 @@ public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
365361
RequestMappingHandlerAdapter adapter = new RequestMappingHandlerAdapter();
366362
adapter.setContentNegotiationManager(mvcContentNegotiationManager());
367363
adapter.setMessageConverters(getMessageConverters());
368-
adapter.setWebBindingInitializer(webBindingInitializer);
364+
adapter.setWebBindingInitializer(getConfigurableWebBindingInitializer());
369365
adapter.setCustomArgumentResolvers(argumentResolvers);
370366
adapter.setCustomReturnValueHandlers(returnValueHandlers);
371367

@@ -385,7 +381,19 @@ public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
385381
}
386382

387383
/**
388-
* Returns a {@link FormattingConversionService} for use with annotated
384+
* Return the {@link ConfigurableWebBindingInitializer} to use for
385+
* initializing all {@link WebDataBinder} instances.
386+
*/
387+
protected ConfigurableWebBindingInitializer getConfigurableWebBindingInitializer() {
388+
ConfigurableWebBindingInitializer initializer = new ConfigurableWebBindingInitializer();
389+
initializer.setConversionService(mvcConversionService());
390+
initializer.setValidator(mvcValidator());
391+
initializer.setMessageCodesResolver(getMessageCodesResolver());
392+
return initializer;
393+
}
394+
395+
/**
396+
* Return a {@link FormattingConversionService} for use with annotated
389397
* controller methods and the {@code spring:eval} JSP tag.
390398
* Also see {@link #addFormatters} as an alternative to overriding this method.
391399
*/
@@ -397,7 +405,7 @@ public FormattingConversionService mvcConversionService() {
397405
}
398406

399407
/**
400-
* Returns a global {@link Validator} instance for example for validating
408+
* Return a global {@link Validator} instance for example for validating
401409
* {@code @ModelAttribute} and {@code @RequestBody} method arguments.
402410
* Delegates to {@link #getValidator()} first and if that returns {@code null}
403411
* checks the classpath for the presence of a JSR-303 implementations

0 commit comments

Comments
 (0)