g:每个都在grails布局模板中

时间:2016-03-31 13:47:16

标签: grails

我正在尝试从布局模板中的后端查询生成导航链接。我认为没有办法让我在模板中使用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>

1 个答案:

答案 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 />