我试图在Spring Boot中为MarkupTemplateEngine
配置一个自定义模板类,该类允许在Groovy中编写模板。我的配置非常简单:
@Configuration
class TemplateConfiguration {
@Bean
public GroovyMarkupConfig groovyMarkupConfigurer() {
new GroovyMarkupConfigurer().tap {
resourceLoaderPath = 'classpath:/templates/'
baseTemplateClass = MainTemplate
}
}
}
将resourceLoaderPath
更改为不存在的路径时,出现404错误,表明该配置已正确加载。但是,在上述代码段中使用setBaseTemplateClass(Class<? extends BaseTemplate>)
时,出现以下错误:
org.codehaus.groovy.runtime.typehandling.GroovyCastException:
Cannot cast object
'org.springframework.web.servlet.view.groovy.GroovyMarkupConfigurer@111bb71a'
with class 'org.springframework.web.servlet.view.groovy.GroovyMarkupConfigurer'
to class 'TemplateConfiguration'
我不知道为什么会出现此错误。我的自定义Template类如下:
abstract class MainTemplate extends BaseTemplate {
MainTemplate(MarkupTemplateEngine templateEngine, Map model, Map<String, String> modelTypes,
TemplateConfiguration configuration) {
super(templateEngine, model, modelTypes, configuration)
}
void doctype() {
yieldUnescaped '<!DOCTYPE html>'
}
}
答案 0 :(得分:0)
让配置扩展GroovyMarkupConfigurer
并覆盖属性即可解决此问题:
@Configuration
class TemplateConfiguration extends GroovyMarkupConfigurer {
final String resourceLoaderPath = 'classpath:/templates/'
final Class<? extends BaseTemplate> baseTemplateClass = MainTemplate
}