在Grails 2.x中找不到名称和路径的模板

时间:2013-03-11 16:15:24

标签: grails

我正在尝试在控制器范围之外渲染模板。

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

修改

我尝试渲染模板“ _list-clients.gsp ”和“ _list-hubs.gsp ”,两者都位于 / views / templates < / strong>在我的主要布局“ main.gsp ”位于 / views 中,使用我在视图中调用的taglib“ list.gsp “位于 / views / client

以下是我如何在视图中包含内容标记:

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

这里我调用list.gsp中的content-tag中的taglib:

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

这是我的taglib:

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]

我预计grails会在我使用“/”引导网址时开始查看视图文件夹,但由于某些原因无法找到模板。

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分: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 ...

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