Template not found for name and path in Grails 2.x
我正在尝试在我的控制器范围之外渲染一个模板。
我要渲染模板的视图位于views/home/index.gsp
编辑:
我尝试渲染模板 "_list-clients.gsp" 和 "_list-hubs.gsp",它们都位于我的主布局 "main.gsp" 的 /views/templates 中,位于 /通过使用我在位于 /views/client
的视图 "list.gsp" 中调用的 taglib 来查看
这里是我如何将内容标签包含到视图中的:
1 | <g:pageProperty name="page.client-menu"/> |
这里我在 list.gsp 的内容标签中调用 taglib:
1 2 3 | <content tag="client-menu"> <g:createClientMenu ></g:createClientMenu> </content> |
这是我的标签库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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 << '' out << 'Select Hub or Client for ' + company?.name out << '<b class="caret">' out << '' 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
我不断收到此错误:
1 2 3 4 5 6 7 8 | 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 开始查看视图文件夹,但由于某些原因无法找到模板。
有人知道怎么解决吗?
终于我发现了错误。我递归地调用了模板。在我的一个模板中,路径不正确......抱歉为这样一个愚蠢的错误而烦恼。下次我在 stackoverflow 上发布错误时,我会确保发布所有涉及的代码。
无论如何感谢所有提供帮助的人。
如果我猜对了,你需要把
我测试了你的代码很长一段时间,但没有得到错误。实际上我删除了
1 | <g:pageProperty name="page.client-menu"/> |
和
1 | <content tag="client-menu"> |
然后保持
1 | <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 ...
所以我尝试将
尝试从
行中删除