Fix issue with @EnableWebMvc + existing ViewResolver

Issue: SPR-12013
This commit is contained in:
Sebastien Deleuze
2014-07-22 11:46:02 +02:00
committed by Rossen Stoyanchev
parent e41b14449e
commit 9092102a83
3 changed files with 39 additions and 15 deletions

View File

@@ -32,6 +32,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver;
import org.springframework.web.servlet.view.groovy.GroovyMarkupConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesConfigurer;
import org.springframework.web.servlet.view.velocity.VelocityConfigurer;
@@ -101,6 +102,15 @@ public class ViewResolutionIntegrationTests {
runTest(InvalidGroovyMarkupWebConfig.class);
}
// SPR-12013
@Test
public void viewResolverBeanWithDefaultViewResolutionConfig() throws Exception {
MockHttpServletResponse response = runTest(FreeMarkerBeanBasedWebConfig.class);
assertEquals("<html><body>Hello World!</body></html>",
response.getContentAsString());
}
private MockHttpServletResponse runTest(Class<?> configClass) throws ServletException, IOException {
String basePath = "org/springframework/web/servlet/config/annotation";
@@ -239,4 +249,22 @@ public class ViewResolutionIntegrationTests {
}
}
@Configuration
static class FreeMarkerBeanBasedWebConfig extends AbstractWebConfig {
@Bean
public FreeMarkerViewResolver freeMarkerViewResolver() {
FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
viewResolver.setSuffix(".ftl");
return viewResolver;
}
@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() {
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setTemplateLoaderPath("/WEB-INF/");
return configurer;
}
}
}

View File

@@ -17,6 +17,7 @@
package org.springframework.web.servlet.config.annotation;
import java.util.List;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import org.joda.time.DateTime;
@@ -49,7 +50,6 @@ 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;
@@ -205,12 +205,12 @@ public class WebMvcConfigurationSupportTests {
}
@Test
public void viewResolvers() throws Exception {
public void emptyViewResolver() throws Exception {
ViewResolverComposite compositeResolver = this.wac.getBean(ViewResolverComposite.class);
assertEquals(Ordered.LOWEST_PRECEDENCE, compositeResolver.getOrder());
List<ViewResolver> resolvers = compositeResolver.getViewResolvers();
assertEquals(1, resolvers.size());
assertEquals(InternalResourceViewResolver.class, resolvers.get(0).getClass());
assertEquals(0, resolvers.size());
assertNull(compositeResolver.resolveViewName("anyViewName", Locale.ENGLISH));
}
@Test