2009-09-08 8 views
2

J'utilise ce code JSTL pour générer un tableau HTML. Chaque rangée reçoit une classe différente, donc nous pouvons donner les rayures de la table. Je sais que nous pouvons le faire facilement avec CSS3 mais je dois supporter les anciens navigateurs.en utilisant JSTL pour construire des tables

De toute façon, c'est le code que j'utilise - il semble très lourd - existe-t-il un moyen plus simple de le faire?

<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> 

Répondre

3

Cela devrait faire l'affaire:

<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> 

J'utilise status.count dans cet exemple; count compte le nombre de fois que la boucle a été exécutée, en commençant à 1. Si vous voulez que le comptage commence à 0, utilisez status.index.

0

Je ne suis pas un gourou JSP, mais peut-être que vous pourriez écrire l'étiquette d'une personnalisée de le faire?

1

Essayez

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