我正在尝试为 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'
我不知道为什么会出现此错误。我的自定义模板类如下所示:
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>'
}
}
让配置扩展GroovyMarkupConfigurer
并覆盖属性解决了问题:
@Configuration
class TemplateConfiguration extends GroovyMarkupConfigurer {
final String resourceLoaderPath = 'classpath:/templates/'
final Class<? extends BaseTemplate> baseTemplateClass = MainTemplate
}