我正在尝试从布局模板中的后端查询生成导航链接。我认为没有办法让我在模板中使用g:each并与控制器通信。我该怎么做呢?
布局/ main.gsp
<g:layoutHead />
</head>
<body>
<header>
<ul>
//How do you specify a controller, I would rather not have to pass these values in from every gsp view.
<g:each var="i" var="navLink" in="${navLinks}">
<li>Title: ${navLink.linkTitle}</li>
</g:each>
</ul>
</header>
<g:layoutBody />
</body>
答案 0 :(得分:1)
鉴于您要在此处尝试做什么,最好将其封装到您可以在GSP中使用并从服务中获取数据的标记库中。例如:
package com.example
class MyExampleTagLib {
def myService
static namespace = 'example'
def renderMenu = { attrs, body ->
List data = myService.fetchData()
out << '<ul>'
data.each {
out << '<li>'
out << it.linkTitle
out << '</li>'
}
out << '</ul>'
}
}
然后在您的GSP中:<example:renderMenu />