0

我正在尝试在我的控制器范围之外呈现模板。

我要渲染模板的视图位于views/home/index.gsp

编辑:

我尝试使用我调用的标记库来渲染位于/views 中的主布局“main.gsp”中的/views/templates 中的模板“ _list - clients.gsp_list - hubs.gsp 位于/views/client中的视图“ list.gsp ”

这是我如何将内容标签包含到视图中:

<g:pageProperty name="page.client-menu"/>

在这里,我在 list.gsp 的内容标记中调用 taglib:

<content tag="client-menu">
    <g:createClientMenu ></g:createClientMenu>
</content>

这是我的标签库:

package com.pmedia.taglib

import com.pmedia.domain.Company

class CreateClientMenuTagLib {

def createClientMenu = {        attrs, body ->
    def company = Company.findByName("pMediaNetwork")

    out << '<ul>'
    out << '<li class="dropdown">'
    out << '<a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown">'
    out << 'Select Hub or Client for ' + company?.name
    out << '<b class="caret"></b>'
    out << '</a>'
    out << '<ul class="dropdown-menu pull-right">'
    if ( company?.getHubs()) {
        out << render(template:"/templates/list-hubs", collection: company.getHubs(), var:"hubs")
    }
    if ( company?.getClients()) {
        out << render(template:"/templates/list-clients", collection: company.getClients(), var:"clients")
    }
    out << '</ul>'
    out << '</li>'
    out << '</ul>'

    }
}

模板位于views/templates/_list-hubs.gsp

我不断收到此错误:

URI
/newLayout/home/index

Class
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException

Message
Template not found for name [templates/list-hubs] and path [/home/templates/_list-hubs.gsp]

当我用“/”引导 URL 时,我希望 grails 开始在视图文件夹中查找,但由于某些原因找不到模板。

有谁知道如何解决这个问题?

4

3 回答 3

1

最后我发现了错误。我递归地调用了模板。在我的一个模板中,路径不正确......抱歉为这样一个愚蠢的错误而烦恼。下次我在 stackoverflow 上发布错误时,我会确保发布所有涉及的代码。无论如何感谢所有帮助过的人。

于 2013-03-12T09:34:52.413 回答
0

如果我的猜测是正确的,你需要把它放到/templates,/grails-app/views而不是放到/grails-app/views/layout/views.

我测试了你的代码很长一段时间,但没有得到错误。实际上我删除了

<g:pageProperty name="page.client-menu"/>

<content tag="client-menu">

并保持

<g:createClientMenu ></g:createClientMenu>

,代码可以正常工作。

当我再次仔细阅读您的问题帖子时,我注意到了这一点:

...模板“_list-clients.gsp”和“_list-hubs.gsp”都位于我的主布局中的/views/templates中 “main.gsp”位于/views ...

所以我试着把 to _list-clients.gsp/layout/views/templates错误重现。这就是为什么我猜你将template文件夹放在与 taglib 不一致的路径中。

于 2013-03-12T02:52:35.273 回答
0

尝试/views从行中删除前缀out << render(template:"...", ...)

于 2013-03-11T17:26:55.087 回答