在Grails 2.x中未找到名称和路径的模板
我试图在我的控制器范围之外呈现模板。在Grails 2.x中未找到名称和路径的模板
,我想呈现模板位于景色的/ home/index.gsp中的观点
编辑:
我尝试呈现模板 “_list-clients.gsp”和“_list-hubs.gsp”,均位于/视图/模板中我主要布局“main.gsp”位于/视图通过使用我invok标签库E在一个视图“的list.gsp”位于/视图/客户
Here's如何我包括内容标签的视图:
<g:pageProperty name="page.client-menu"/>
在这里,我调用在标签库内容标签中的list.gsp:
<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>'
}
}
模板位于视图/模板/ _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开始寻找在查看文件夹时,我带领的URL一个“/”但由于某些原因模板无法找到。
有人知道如何解决这个问题吗?
尝试从行out << render(template:"...", ...)
删除/views
前缀。
如果我的猜测是正确的,则需要将/templates
设置为/grails-app/views
,而不是将其设置为/grails-app/views/layout/views
。
我测试了你的代码很长一段时间,但没有得到错误。其实我删除
<g:pageProperty name="page.client-menu"/>
和
<content tag="client-menu">
,只是保持
<g:createClientMenu ></g:createClientMenu>
,与该代码工作正常。
当我仔细阅读了你的问题后,我再次注意到了这一点:
... the templates "_list-clients.gsp" and "_list-hubs.gsp", both located in /views/templates in my main layout "main.gsp" located in /views ...
所以我试图把_list-clients.gsp
到/layout/views/templates
,错误被复制。这就是为什么我猜你会将template
文件夹放到与taglib不一致的路径上。
最后我发现了错误。我递归地调用模板。而在我的一个模板中,路径不正确...抱歉,因为这样一个愚蠢的错误而烦恼。下次我在stackoverflow上发布一个错误,我会确保发布所有涉及的代码。 无论如何,感谢所有帮助过的人。
代码和错误似乎没有关系。您的渲染代码使用模板'/ templates/list-hubs',而您的错误消息是针对模板'templates/list-clients'。您已经忘记了**客户**模板的主要斜线。 – hsan 2013-03-11 16:28:35
对不起,当发布错误时,我没有重新加载浏览器。我在上面编辑了它的实际错误。 – bernheart 2013-03-11 16:38:21
仍然看起来好像你缺少主导斜线。另外,你是否在scriptlet块('')中调用'render'?这是[灰心](http://grails.org/doc/latest/guide/theWebLayer.html#GSPBasics)。为什么不使用''标签(或[模板名称空间](http://grails.org/doc/latest/guide/theWebLayer.html#viewsAndTemplates))? –
hsan
2013-03-11 16:57:02