0

这是我以前在 JSP 中遇到过的 GSP 问题/琐事,我正在寻找最干净的解决方案。

本质上,我使用 for 循环(<g:each>在 GSP 中)遍历项目列表并为每个项目输出一个 HTML 节点:

<g:each status="i" var="item" in="items">
    <span class="item">${item}</span>
</g:each>

所有<span>节点都包含一个 CSS 类item,但我希望第一个节点也包含一个selected类。因此,我将代码更新为:

<g:each status="i" var="item" in="items">
    <g:if test="${i == 0}">
        <span class="item selected">${item}</span>
    </g:if>
    <g:else>
        <span class="item">${item}</span>
    </g:else>
</g:each>

这似乎是一种复杂的方法,但是因为我复制了很多代码。另一种解决方案是使用自定义标签库并将当前索引传递给它:

<g:each status="i" var="item" in="items">
    <span class="item <g:getItemClass index='${i}' />">${item}</span>
</g:each>

selected当 index 等于 0 时,标签库将返回,否则它不会返回任何内容。同样,这增加了复杂性。

其他可能的解决方案:

  • 在你的 CSS 类名中使用索引(非常混乱)
  • 设置一个类名var()。不比自定义标签 imo 好。
  • 使用小脚本(没办法)

还有其他干净简单的方法吗?

谢谢!

4

1 回答 1

2

通常它只是一个:

<g:each status="i" var="item" in="items">
    <span class="item ${i == 0 ? 'selected' : ''}">${item}</span>
</g:each>
于 2013-05-21T16:24:32.040 回答