grails当前页面突出显示

时间:2013-10-16 14:49:17

标签: grails gsp

在grails我有一个菜单。我正在尝试突出显示活动页面的菜单项:

link1
link2 (show as bold if the controller action partially matches this gsp name)
link3

我有工作代码,但似乎会有更好的方法。

Taglib工作正常:

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 / actions会因为它们的命名方式而导致链接处于活动状态:

aboutYouLocation
aboutYouBackground
aboutYouEducation

所有这些链接都是活跃的链接:

About You

我可以进行部分匹配,但是我还有一些以aboutYour(额外的R)开头的动作/ gsps,导致我将数组传递给我的taglib。

1 个答案:

答案 0 :(得分:3)

使用Platform Core plugin有一种标准方法。它会为您提供Navigation API

的grails-app / CONF / AppNavigation.groovy

navigation = {
    // Declare the "app" scope, used by default in tags
    app {
      contact(action: 'contactInfo')
      about(action: 'aboutYouFamily')
    }
}

* grails-app / view / _menu.gsp *(您可以在布局或GSP中使用的模板)

<nav:menu scope="app" id="navigation" />

您还可以自定义为菜单生成的html,查看custom item rendering