【发布时间】:2013-10-16 14:49:16
【问题描述】:
在 grails 中我有一个菜单。我正在尝试突出显示活动页面的菜单项:
link1
link2 (show as bold if the controller action partially matches this gsp name)
link3
我有工作代码,但似乎有更好的方法。
标签库工作正常:
def active = { attrs, body ->
for (page in attrs.check) {
if (params.action.startsWith(page)) {
out << "current"
break
}
}
}
这个选项效果很好,但看起来很罗嗦:
<li><a href="${createLink(action: 'contactInfo')}" title="Contact Info" class="<xyz:active check='${['contactInfo']}'/>">Contact Info</a></li>
<li><a href="${createLink(action: 'aboutYouFamily')}" title="About You" class="<xyz:active check='${['aboutYouFamily', 'aboutYouBackground', 'aboutYouCharacteristics', 'aboutYouLifestyle', 'aboutYouApplicant2']}'/>">About You</a></li>
这会爆炸:
<g:link action='myProfile' class="${<xyz:active check='${['myControllerAction']}'/>}">My Profile</g:link>
我不相信您可以将 taglib 作为参数传递给 g:link
我还要求多个 gsps/动作会因为它们的命名方式而导致链接处于活动状态:
aboutYouLocation
aboutYouBackground
aboutYouEducation
全部使此链接成为活动链接:
About You
我可以进行部分匹配,但我也有一些以 aboutYour(额外 R)开头的操作/gsps,导致我使用的数组被传递到我的 taglib 中。
【问题讨论】: