我正在尝试在控制器范围之外渲染模板。
我想要渲染模板的视图位于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会在我使用“/”引导网址时开始查看视图文件夹,但由于某些原因无法找到模板。
有人知道如何解决这个问题吗?
答案 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不一致的路径上。