diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java index 08fa7d1022..084250ae49 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java @@ -81,6 +81,7 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver; import org.springframework.web.servlet.resource.ResourceUrlProvider; import org.springframework.web.servlet.resource.ResourceUrlProviderExposingInterceptor; +import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.ViewResolverComposite; import org.springframework.web.util.UrlPathHelper; @@ -779,6 +780,9 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv * {@link org.springframework.core.Ordered#HIGHEST_PRECEDENCE * Ordered.HIGHEST_PRECEDENCE}. * + *

An {@code InternalResourceViewResolver} is added by default if no other + * resolvers are configured. + * * @since 4.1 */ @Bean @@ -788,9 +792,14 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv registry.setApplicationContext(this.applicationContext); configureViewResolvers(registry); + List viewResolvers = registry.getViewResolvers(); + if (viewResolvers.isEmpty()) { + viewResolvers.add(new InternalResourceViewResolver()); + } + ViewResolverComposite composite = new ViewResolverComposite(); composite.setOrder(registry.getOrder()); - composite.setViewResolvers(registry.getViewResolvers()); + composite.setViewResolvers(viewResolvers); composite.setApplicationContext(this.applicationContext); composite.setServletContext(this.servletContext); return composite; diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportTests.java index 7e704842a7..b7f8a8f382 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupportTests.java @@ -49,6 +49,7 @@ import org.springframework.web.method.support.CompositeUriComponentsContributor; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.HandlerExecutionChain; import org.springframework.web.servlet.ViewResolver; +import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.ViewResolverComposite; import org.springframework.web.servlet.handler.AbstractHandlerMapping; import org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping; @@ -208,7 +209,8 @@ public class WebMvcConfigurationSupportTests { ViewResolverComposite compositeResolver = this.wac.getBean(ViewResolverComposite.class); assertEquals(Ordered.LOWEST_PRECEDENCE, compositeResolver.getOrder()); List resolvers = compositeResolver.getViewResolvers(); - assertEquals(0, resolvers.size()); + assertEquals(1, resolvers.size()); + assertEquals(InternalResourceViewResolver.class, resolvers.get(0).getClass()); } @Test