lunes, abril 09, 2007

Alternando Colores en tablas con jstl

Es muy común mostrar tablas o listas en las aplicaciones. Para facilitar su lectura usamos diferentes colores para cada fila (row).
<c:if test="${!model.editMode}">
<table>
<c:forEach items="${model.marcas}" var="marca" varStatus="loop">
<tr style="background: ${((loop.index % 2) == 0) ? '#D9E5F2' : '#ABC6E2'}">
<td>
Español: <c:out value="${marca.entNombre.es}" />
<br>
Inglés: <c:out value="${marca.entNombre.en}" />
</td>
<td>
<c:url value="marcas.html?id=${marca.marcaId}" var="editLink" />
<a href="${editLink}">Editar</a>
</td>
</tr>
</c:forEach>
</table>
</c:if>
Es muy simple y funciona muy bien, puede haber otras adaptaciones y en lugar de poner directamente el color de la fila podemos colocar un estilo.

<c:forEach items="${model.marcas}" var="marca" varStatus="status">
<tr class="${((status.index % 2) == 0) ? 'par' : 'impar'}">


Esto gracias a los valores que nos da varStatus. En la siguiente tabla pongo todos:
  • current getCurrent()
    El item (de la colección) para el actual round de iteración
  • index getIndex()
    El índice desde cero para el actual round de iteración
  • count getCount()
    La cuenta desde uno para el actual round de iteración
  • first isFirst()
    Bandera que indica si el actual item es el primero de la ronda de iteración
  • last isLast()
    Bandera que indica si el actual item es el último de la ronda de iteración
  • begin getBegin()
    El valor de begin
  • end getEnd()
    El valor de end
  • step getStep() El valor de step

3 comentarios:

Anónimo dijo...

Falso, no funciona. Da error en la ?.

juparave dijo...

${((status.index % 2) == 0) ? 'par' : 'impar'}

¿qué error te da?

SIIT dijo...

Es un engaño completo, atte. Grupo SIIT
En unos instantes les pasamos el codigo :P