Use URLs for groovy template resources
This commit is contained in:
parent
e471759be8
commit
c8ca2495de
|
@ -36,6 +36,7 @@ import org.springframework.boot.autoconfigure.groovy.template.web.GroovyTemplate
|
||||||
import org.springframework.boot.autoconfigure.groovy.template.web.LocaleAwareTemplate;
|
import org.springframework.boot.autoconfigure.groovy.template.web.LocaleAwareTemplate;
|
||||||
import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.i18n.LocaleContextHolder;
|
import org.springframework.context.i18n.LocaleContextHolder;
|
||||||
|
@ -70,7 +71,7 @@ public class GroovyTemplateAutoConfiguration {
|
||||||
public static class GroovyWebConfiguration implements BeanClassLoaderAware {
|
public static class GroovyWebConfiguration implements BeanClassLoaderAware {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private final ResourceLoader resourceLoader = new DefaultResourceLoader();
|
private ApplicationContext resourceLoader;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private GroovyTemplateProperties properties;
|
private GroovyTemplateProperties properties;
|
||||||
|
@ -95,11 +96,14 @@ public class GroovyTemplateAutoConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
private ClassLoader createParentLoaderForTemplates() throws Exception {
|
private ClassLoader createParentLoaderForTemplates() throws Exception {
|
||||||
Resource resource = this.resourceLoader.getResource(this.properties
|
Resource[] resources = this.resourceLoader.getResources(this.properties
|
||||||
.getPrefix());
|
.getPrefix());
|
||||||
if (resource.exists()) {
|
if (resources.length > 0) {
|
||||||
return new URLClassLoader(new URL[] { resource.getURL() },
|
URL[] urls = new URL[resources.length];
|
||||||
this.classLoader);
|
for (int i = 0; i < resources.length; i++) {
|
||||||
|
urls[i] = resources[i].getURL();
|
||||||
|
}
|
||||||
|
return new URLClassLoader(urls, this.classLoader);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return this.classLoader;
|
return this.classLoader;
|
||||||
|
@ -114,7 +118,6 @@ public class GroovyTemplateAutoConfiguration {
|
||||||
resolver.setSuffix(this.properties.getSuffix());
|
resolver.setSuffix(this.properties.getSuffix());
|
||||||
resolver.setCache(this.properties.isCache());
|
resolver.setCache(this.properties.isCache());
|
||||||
resolver.setContentType(this.properties.getContentType());
|
resolver.setContentType(this.properties.getContentType());
|
||||||
resolver.setCharSet(this.properties.getCharSet());
|
|
||||||
resolver.setViewNames(this.properties.getViewNames());
|
resolver.setViewNames(this.properties.getViewNames());
|
||||||
resolver.setTemplateEngine(engine);
|
resolver.setTemplateEngine(engine);
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ import groovy.text.SimpleTemplateEngine;
|
||||||
import groovy.text.Template;
|
import groovy.text.Template;
|
||||||
import groovy.text.TemplateEngine;
|
import groovy.text.TemplateEngine;
|
||||||
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.springframework.beans.propertyeditors.LocaleEditor;
|
import org.springframework.beans.propertyeditors.LocaleEditor;
|
||||||
|
@ -36,8 +35,6 @@ public class GroovyTemplateViewResolver extends UrlBasedViewResolver {
|
||||||
|
|
||||||
private TemplateEngine engine = new SimpleTemplateEngine();
|
private TemplateEngine engine = new SimpleTemplateEngine();
|
||||||
|
|
||||||
private String charSet = "UTF-8";
|
|
||||||
|
|
||||||
public GroovyTemplateViewResolver() {
|
public GroovyTemplateViewResolver() {
|
||||||
setViewClass(GroovyTemplateView.class);
|
setViewClass(GroovyTemplateView.class);
|
||||||
}
|
}
|
||||||
|
@ -49,21 +46,13 @@ public class GroovyTemplateViewResolver extends UrlBasedViewResolver {
|
||||||
this.engine = engine;
|
this.engine = engine;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param charSet the charSet to set
|
|
||||||
*/
|
|
||||||
public void setCharSet(String charSet) {
|
|
||||||
this.charSet = charSet;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected View loadView(String viewName, Locale locale) throws Exception {
|
protected View loadView(String viewName, Locale locale) throws Exception {
|
||||||
Resource resource = resolveResource(viewName, locale);
|
Resource resource = resolveResource(viewName, locale);
|
||||||
if (resource == null) {
|
if (resource == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Template template = this.engine.createTemplate(new InputStreamReader(resource
|
Template template = this.engine.createTemplate(resource.getURL());
|
||||||
.getInputStream(), this.charSet));
|
|
||||||
GroovyTemplateView view = new GroovyTemplateView(template);
|
GroovyTemplateView view = new GroovyTemplateView(template);
|
||||||
view.setApplicationContext(getApplicationContext());
|
view.setApplicationContext(getApplicationContext());
|
||||||
view.setServletContext(getServletContext());
|
view.setServletContext(getServletContext());
|
||||||
|
|
Loading…
Reference in New Issue