如何测试某个g:link是否是当前正在呈现的URL?

时间:2014-12-24 12:39:05

标签: url grails menu

我正在使用g:link标记为我的webapp创建一个简单的菜单:

<ul>
    <li class="active">
        <g:link controller="dashboard">Dashboard</g:link>
    </li>
    <li>
        <g:link controller="projects">Projects</g:link>
    </li>
    ...
</ul>

但只要链接对应当前网址,我就需要输出class="active"

在Grails中执行此操作的最佳或最常用方法是什么?

1 个答案:

答案 0 :(得分:1)

在上面的例子中,我只想这样写:

<ul>
    <li class="${controllerName == 'dashboard' ? 'active' : ''}">
        <g:link controller="dashboard">Dashboard</g:link>
    </li>
    <li class="${controllerName == 'projects' ? 'active' : ''}">
        <g:link controller="projects">Projects</g:link>
    </li>
    ...
</ul>

在一般情况下,它可能很棘手。您必须至少将controllerNameactionNameparams与链接参数进行比较,或将当前网址作为字符串进行比较并将其与输出g.createLink(..)进行比较 - 但是当然,不同的params顺序会打破这种逻辑。