我正在将一组grails 2.0.4应用程序迁移到3.x版本。所有这些都与许多Java应用程序一起部署在同一台服务器上。使用sitemesh和freemarker模板,这两套java和grails应用程序都具有共同的外观和感觉。 但是,使用grails 3.x我无法使通常装饰工作,应用程序坚持使用layouts/main.gsp来渲染我的gsp。在Grails中使用Sitemesh 3
到目前为止(grails 2.0.4)提供一个共同的装饰是相当直接的;每个grails应用程序的文件/WEB-INF/decorators.xml都提供了对可用的自由标记模板的引用。和web.xml中包括SiteMesh的过滤器和freemarker的装饰的servlet声明和映射
decorators.xml:从web.xml中
/ND/*
/*/ND/*
/*
SiteMesh的过滤器和freemarker的servlet的:
sitemesh
org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter
sitemesh
/*
REQUEST
ERROR
sitemesh-freemarker
com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet
TemplatePath
class://
default_encoding
UTF-8
2
sitemesh-freemarker
*.ftl
什么我试过了:
我把src/main/webapp/WEB-INF下的decorators.xml
在grails 3.x sitemesh过滤器不存在了,所以我删除了sitemesh.xml
web.xml没有被使用,所以现在我已经定义了spring/resources.groovy的freemarker servlet:
resources.groovy:
beans = {
sitemeshFreemarkerServlet(ServletRegistrationBean) {
servlet = bean(FreemarkerDecoratorServlet)
urlMappings = ["*.ftl"]
loadOnStartup = 2
}
}
然而,Grails的3.x应用程序 - 坚持使用布局/ main.gsp来呈现我的GSP页面。看来decorator.xml没有被处理。我错过了什么?