Grails 围绕自定义标记包装Groovy标记

Grails 围绕自定义标记包装Groovy标记,grails,Grails,本质上,我试图找到一种更简洁的方式来表示这段代码: <li><g:link controller="ActivityDashboard" action="summary">Summary</g:link></li> <li><g:link controller="ActivityDashboard" action="user_details">User Details</g:link></li> &l

本质上,我试图找到一种更简洁的方式来表示这段代码:

<li><g:link controller="ActivityDashboard" action="summary">Summary</g:link></li>
<li><g:link controller="ActivityDashboard" action="user_details">User Details</g:link></li>
<li><g:link controller="ActivityDashboard" action="groups_monitors">Groups & Monitors</g:link></li>
<li><g:link controller="ActivityDashboard" action="Top Content">Top Content</g:link></li>
<li><g:link controller="ActivityDashboard" action="embedded_components">Embedded Components</g:link></li>
<li><g:link controller="ActivityDashboard" action="customer_summary">Customer Summary</g:link></li>
  • 摘要
  • 用户详细信息
  • 组和监视器
  • 顶级内容
  • 嵌入式组件
  • 客户概要
  • 如您所见,存在大量重复,因此我创建了a标记,如下所示:

    def navLink = { attrs, body ->
      out << "<li>"
      out << "<g:link controller='ActivityDashboard' action='${attrs.action}'>${attrs.title}"
      out << "</g:link></li>"
    }
    
    def navLink={attrs,body->
    out您需要使用标记的g.link()版本,以便GString解析它并按照您的需要呈现输出

    out << g.link(attrs.title, controller: 'ActivityDashboard', action: attrs.action)
    
    out您需要使用标记的g.link()版本,以便GString解析它,并按照您的需要呈现输出

    out << g.link(attrs.title, controller: 'ActivityDashboard', action: attrs.action)
    

    你的想法正确,但我认为你的答案可以改进。检查我的编辑。格雷格,你在这里回答了这个问题,这将回答我的奖金问题:,我如何在标签中获得actionName?你的想法正确,但我认为你的答案可以改进。检查我的编辑。格雷格,你在这里回答了这个问题,这将回答我的奖金问题stion:,如何在标记中获取actionName?
    
    out << g.link(attrs.title, controller: 'ActivityDashboard', action: attrs.action)