本质上,我试图找到一种 DRYer 方法来表示这段代码:
<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>"
}
但是,输出 html 正是:
<g:link action="summary" controller="ActivityDashboard">Summary</g:link>
我怎样才能像这样渲染:
<a href="/engagementlevels/activityDashboard/summary">Summary</a>
奖励积分:我能否从标签访问页面的 actionName 属性?
您需要使用标记的 g.link() 版本,以便 GString 解析它并根据需要呈现输出。
out << g.link(attrs.title, controller: 'ActivityDashboard', action: attrs.action)