Convenience constructors for common view prefix/suffix scenarios
Issue: SPR-13813
This commit is contained in:
parent
66dd880335
commit
41ee25b1e7
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2014 the original author or authors.
|
* Copyright 2002-2015 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -53,10 +53,7 @@ public class ViewResolutionTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testJspOnly() throws Exception {
|
public void testJspOnly() throws Exception {
|
||||||
|
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver("/WEB-INF/", ".jsp");
|
||||||
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
|
|
||||||
viewResolver.setPrefix("/WEB-INF/");
|
|
||||||
viewResolver.setSuffix(".jsp");
|
|
||||||
|
|
||||||
standaloneSetup(new PersonController()).setViewResolvers(viewResolver).build()
|
standaloneSetup(new PersonController()).setViewResolvers(viewResolver).build()
|
||||||
.perform(get("/person/Corea"))
|
.perform(get("/person/Corea"))
|
||||||
|
@ -68,7 +65,6 @@ public class ViewResolutionTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testJsonOnly() throws Exception {
|
public void testJsonOnly() throws Exception {
|
||||||
|
|
||||||
standaloneSetup(new PersonController()).setSingleView(new MappingJackson2JsonView()).build()
|
standaloneSetup(new PersonController()).setSingleView(new MappingJackson2JsonView()).build()
|
||||||
.perform(get("/person/Corea"))
|
.perform(get("/person/Corea"))
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
|
@ -78,7 +74,6 @@ public class ViewResolutionTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testXmlOnly() throws Exception {
|
public void testXmlOnly() throws Exception {
|
||||||
|
|
||||||
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
|
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
|
||||||
marshaller.setClassesToBeBound(Person.class);
|
marshaller.setClassesToBeBound(Person.class);
|
||||||
|
|
||||||
|
@ -91,7 +86,6 @@ public class ViewResolutionTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testContentNegotiation() throws Exception {
|
public void testContentNegotiation() throws Exception {
|
||||||
|
|
||||||
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
|
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
|
||||||
marshaller.setClassesToBeBound(Person.class);
|
marshaller.setClassesToBeBound(Person.class);
|
||||||
|
|
||||||
|
@ -131,7 +125,6 @@ public class ViewResolutionTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void defaultViewResolver() throws Exception {
|
public void defaultViewResolver() throws Exception {
|
||||||
|
|
||||||
standaloneSetup(new PersonController()).build()
|
standaloneSetup(new PersonController()).build()
|
||||||
.perform(get("/person/Corea"))
|
.perform(get("/person/Corea"))
|
||||||
.andExpect(model().attribute("person", hasProperty("name", equalTo("Corea"))))
|
.andExpect(model().attribute("person", hasProperty("name", equalTo("Corea"))))
|
||||||
|
|
|
@ -66,6 +66,19 @@ public class InternalResourceViewResolver extends UrlBasedViewResolver {
|
||||||
setViewClass(viewClass);
|
setViewClass(viewClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A convenience constructor that allows for specifying {@link #setPrefix prefix}
|
||||||
|
* and {@link #setSuffix suffix} as constructor arguments.
|
||||||
|
* @param prefix the prefix that gets prepended to view names when building a URL
|
||||||
|
* @param suffix the suffix that gets appended to view names when building a URL
|
||||||
|
* @since 4.3
|
||||||
|
*/
|
||||||
|
public InternalResourceViewResolver(String prefix, String suffix) {
|
||||||
|
this();
|
||||||
|
setPrefix(prefix);
|
||||||
|
setSuffix(suffix);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This resolver requires {@link InternalResourceView}.
|
* This resolver requires {@link InternalResourceView}.
|
||||||
|
|
|
@ -40,10 +40,28 @@ import org.springframework.web.servlet.view.AbstractTemplateViewResolver;
|
||||||
*/
|
*/
|
||||||
public class FreeMarkerViewResolver extends AbstractTemplateViewResolver {
|
public class FreeMarkerViewResolver extends AbstractTemplateViewResolver {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the default {@link #setViewClass view class} to {@link #requiredViewClass}:
|
||||||
|
* by default {@link FreeMarkerView}.
|
||||||
|
*/
|
||||||
public FreeMarkerViewResolver() {
|
public FreeMarkerViewResolver() {
|
||||||
setViewClass(requiredViewClass());
|
setViewClass(requiredViewClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A convenience constructor that allows for specifying {@link #setPrefix prefix}
|
||||||
|
* and {@link #setSuffix suffix} as constructor arguments.
|
||||||
|
* @param prefix the prefix that gets prepended to view names when building a URL
|
||||||
|
* @param suffix the suffix that gets appended to view names when building a URL
|
||||||
|
* @since 4.3
|
||||||
|
*/
|
||||||
|
public FreeMarkerViewResolver(String prefix, String suffix) {
|
||||||
|
this();
|
||||||
|
setPrefix(prefix);
|
||||||
|
setSuffix(suffix);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requires {@link FreeMarkerView}.
|
* Requires {@link FreeMarkerView}.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -38,10 +38,28 @@ import org.springframework.web.servlet.view.AbstractTemplateViewResolver;
|
||||||
*/
|
*/
|
||||||
public class GroovyMarkupViewResolver extends AbstractTemplateViewResolver {
|
public class GroovyMarkupViewResolver extends AbstractTemplateViewResolver {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the default {@link #setViewClass view class} to {@link #requiredViewClass}:
|
||||||
|
* by default {@link GroovyMarkupView}.
|
||||||
|
*/
|
||||||
public GroovyMarkupViewResolver() {
|
public GroovyMarkupViewResolver() {
|
||||||
setViewClass(requiredViewClass());
|
setViewClass(requiredViewClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A convenience constructor that allows for specifying {@link #setPrefix prefix}
|
||||||
|
* and {@link #setSuffix suffix} as constructor arguments.
|
||||||
|
* @param prefix the prefix that gets prepended to view names when building a URL
|
||||||
|
* @param suffix the suffix that gets appended to view names when building a URL
|
||||||
|
* @since 4.3
|
||||||
|
*/
|
||||||
|
public GroovyMarkupViewResolver(String prefix, String suffix) {
|
||||||
|
this();
|
||||||
|
setPrefix(prefix);
|
||||||
|
setSuffix(suffix);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<?> requiredViewClass() {
|
protected Class<?> requiredViewClass() {
|
||||||
return GroovyMarkupView.class;
|
return GroovyMarkupView.class;
|
||||||
|
|
|
@ -35,10 +35,28 @@ import org.springframework.web.servlet.view.UrlBasedViewResolver;
|
||||||
*/
|
*/
|
||||||
public class ScriptTemplateViewResolver extends UrlBasedViewResolver {
|
public class ScriptTemplateViewResolver extends UrlBasedViewResolver {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the default {@link #setViewClass view class} to {@link #requiredViewClass}:
|
||||||
|
* by default {@link ScriptTemplateView}.
|
||||||
|
*/
|
||||||
public ScriptTemplateViewResolver() {
|
public ScriptTemplateViewResolver() {
|
||||||
setViewClass(requiredViewClass());
|
setViewClass(requiredViewClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A convenience constructor that allows for specifying {@link #setPrefix prefix}
|
||||||
|
* and {@link #setSuffix suffix} as constructor arguments.
|
||||||
|
* @param prefix the prefix that gets prepended to view names when building a URL
|
||||||
|
* @param suffix the suffix that gets appended to view names when building a URL
|
||||||
|
* @since 4.3
|
||||||
|
*/
|
||||||
|
public ScriptTemplateViewResolver(String prefix, String suffix) {
|
||||||
|
this();
|
||||||
|
setPrefix(prefix);
|
||||||
|
setSuffix(suffix);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class<?> requiredViewClass() {
|
protected Class<?> requiredViewClass() {
|
||||||
return ScriptTemplateView.class;
|
return ScriptTemplateView.class;
|
||||||
|
|
|
@ -257,9 +257,7 @@ public class ViewResolutionIntegrationTests {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public FreeMarkerViewResolver freeMarkerViewResolver() {
|
public FreeMarkerViewResolver freeMarkerViewResolver() {
|
||||||
FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
|
return new FreeMarkerViewResolver("", ".ftl");
|
||||||
viewResolver.setSuffix(".ftl");
|
|
||||||
return viewResolver;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
|
|
@ -99,9 +99,7 @@ public class ViewResolverRegistryTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void customViewResolver() {
|
public void customViewResolver() {
|
||||||
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
|
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver("/", ".jsp");
|
||||||
viewResolver.setPrefix("/");
|
|
||||||
viewResolver.setSuffix(".jsp");
|
|
||||||
this.registry.viewResolver(viewResolver);
|
this.registry.viewResolver(viewResolver);
|
||||||
assertSame(viewResolver, this.registry.getViewResolvers().get(0));
|
assertSame(viewResolver, this.registry.getViewResolvers().get(0));
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,9 +156,7 @@ public class FreeMarkerViewTests {
|
||||||
wac.getBeanFactory().registerSingleton("configurer", configurer);
|
wac.getBeanFactory().registerSingleton("configurer", configurer);
|
||||||
wac.refresh();
|
wac.refresh();
|
||||||
|
|
||||||
FreeMarkerViewResolver vr = new FreeMarkerViewResolver();
|
FreeMarkerViewResolver vr = new FreeMarkerViewResolver("prefix_", "_suffix");
|
||||||
vr.setPrefix("prefix_");
|
|
||||||
vr.setSuffix("_suffix");
|
|
||||||
vr.setApplicationContext(wac);
|
vr.setApplicationContext(wac);
|
||||||
|
|
||||||
View view = vr.resolveViewName("test", Locale.CANADA);
|
View view = vr.resolveViewName("test", Locale.CANADA);
|
||||||
|
|
Loading…
Reference in New Issue