【问题标题】:grails current page highlightgrails 当前页面突出显示
【发布时间】: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 中。

【问题讨论】:

标签: grails gsp


【解决方案1】:

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

【讨论】:

  • 这是一个很棒的插件。我希望我早点知道。它清理了我的代码很多。
  • 是的,确实是一个很棒的插件 :-) 我认为更多的 grails 插件/应用程序应该使用它,让事情变得更加标准。
猜你喜欢
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
相关资源
最近更新 更多