使用JSTL构建表

时间:2009-09-08 17:13:21

标签: optimization jstl

我正在使用此JSTL代码生成HTML表格。每隔一行都有一个不同的类,所以我们可以给表条纹。我知道我们可以使用CSS3轻松完成这项工作,但我必须支持旧浏览器。

无论如何这是我使用的代码 - 看起来很重 - 是否有更简单的方法呢?

<c:set var="oddEven" value="true" />
<c:forEach var="row" items="${rows}">
    <c:choose>
        <c:when test="${oddEven}">
        <tr>
        </c:when>

        <c:otherwise>
        <tr class="odd">
        </c:otherwise>
    </c:choose>
            <td>${row.value1}</td>
            <td>${row.value2}</td>
        </tr>
    <c:set var="oddEven" value="${!oddEven}" />
</c:forEach>

3 个答案:

答案 0 :(得分:3)

这应该可以解决问题:

<c:forEach var="row" items="${rows}" varStatus="status">
    <tr
      <c:if test="${status.count % 2 ne 0}">
        class="odd"
      </c:if>
    >
      <td>...</td>
    </tr>
</c:forEach>

我在这个例子中使用status.count; count计算循环执行的次数,从1开始。如果您希望计数从0开始,请使用status.index

答案 1 :(得分:1)

尝试

<tr class="${(status.index % 2) == 0 ? 'oddRow' : 'evenRow'}">

答案 2 :(得分:0)

我不是JSP大师,但你可以写一个自定义jsp标签来做这个吗?