Grails在部署时呈现来自不同插件的视图

时间:2013-02-01 08:39:24

标签: grails

我遇到了一个问题,这只是在我的应用程序部署时出现问题 - 开发时没有问题。

我有2个控制器。一个控制器驻留在一个插件中,第二个正在扩展。视图文件夹中存在特定模板 - “main”项目中的/templates/_mytemplate.gsp - 即不在插件中。

“common-controller”有一种基于字符串呈现各种模板的方法。这就是麻烦开始的地方。使用:

String summary = groovyPageRenderer.render(template: "/mycontroller/templates/_mytemplates.gsp", model: [foo: bar])

在开发中工作得很好但是在部署战争时,字符串是空的。我已将此问题缩小为resolveSearchPaths [1]中的DefaultGroovyPageLocator方法,以区分查找路径。

任何?什么是合理的解决方案?优选模板不在插件中....

2 个答案:

答案 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])