grails - 将Groovy标签包裹在自定义标签周围

标签 grails

本质上,我试图找到一种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>

如您所见,这里有很多重复,所以我创建了一个标签,如下所示:
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)

关于grails - 将Groovy标签包裹在自定义标签周围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14512585/

相关文章:

sql - 我如何获取同名员工的所有ID

Git 没有跟踪我的一些文件夹

grails - 如何在Grails 3中从application.yml定义Service Bean的属性?

javascript - 如何将 javascript 确认答案传递到 Grails Controller 中?

Grails:返回 404 并显示无效 id 的 'Not Found' 页面

tomcat - 如何在cpanel上部署grails war文件(支持tomcat)

grails - 如何在Grails中映射来自不同dataSources的表?

grails - Grails脚本调用我自己的Java类

grails - springSecurityService.principal.id给出名字而不是用户ID

javascript - 使用 Javascript 中的 GSP 标签