我遇到了一个问题,这只是在我的应用程序部署时出现问题 - 开发时没有问题。
我有2个控制器。一个控制器驻留在一个插件中,第二个正在扩展。视图文件夹中存在特定模板 - “main”项目中的/templates/_mytemplate.gsp
- 即不在插件中。
“common-controller”有一种基于字符串呈现各种模板的方法。这就是麻烦开始的地方。使用:
String summary = groovyPageRenderer.render(template: "/mycontroller/templates/_mytemplates.gsp", model: [foo: bar])
在开发中工作得很好但是在部署战争时,字符串是空的。我已将此问题缩小为resolveSearchPaths
[1]中的DefaultGroovyPageLocator
方法,以区分查找路径。
任何?什么是合理的解决方案?优选模板不在插件中....
答案 0 :(得分:0)
我在几天前发布了类似的问题并使用了类似的内容:
try {
//look for template in the main app
def html = render(template:'/mycontroller/templates/mytemplates', model: [foo: bar])
if(html && html.size() > 0) {
render html
}
} catch (Exception e) {
//bad way to handle template not found.
}
//fallback on the template defined in the plugin
render(plugin:'myPlugin', template:'/mycontroller/templates/mytemplates', model: [foo: bar])
这可能不是解决此问题的最佳方法,但至少可以使部署的战争有效。
答案 1 :(得分:0)
愚蠢的愚蠢!
在Windows上开发 - 部署到Unix。所以忘记了一个来自Windows而不是在Unix上运行的软件: -
所以要让它发挥作用:
String summary = groovyPageRenderer.render(template: "/mycontroller/templates/_my**T**emplates.gsp", model: [foo: bar])