2010-10-13 9 views
1

J'utilise des entretoises logic:iterate et j'ai besoin de changer le style sur la dernière ligne qu'il écrit.Struts logique: itérer

J'ai un bean:size et indexId sur l'étiquette itérer, mais je ne peux pas comprendre une combinaison logique de dire si bean:size = indexId parce que la taille est la taille de la collection, et le maximum indexId va toujours à la taille -1 à cause de départ à 0.

Répondre

1

Ma dernière fois que je l'ai fait Struts était au début de cette année, alors laissez-moi vous expliquer avec connaissance,

Il n'y a aucun moyen de déterminer la longueur des collections en utilisant logic:iterate (Voir l'explication here). Ce que vous devez faire est la suivante:

En supposant que vos collections est placé sous request.setAttribute("collections", allMyCollections);

Vous pouvez utiliser EL (Expression Language) pour déterminer la taille et de déterminer si elles sont égales en utilisant c:if, à savoir dans ce effet:

<logic:iterate name="collections" id="curElement"> 
    <c:if test="${curElement.indexId == ${fn:length(collections) - 1}}"> 
     <!-- It is pretty messy ...but you get the idea --> 
     <!-- We are the last element...whoohoo!!! --> 
    </c:if> 
</logic:iterate> 

Sinon, utilisez <bean:size /> pour obtenir la taille des collections, fixé à une variable et vous utiliserez scriplets pour obtenir la taille des collections stockées et utiliser <logic:equal> balises pour voir si le dernier indice est à collections.size() -1 (mais c'est lourd).

Espérons que cela aide.

PS Le code est rude ....

0

Cela pourrait venir à la fin, mais je pense que cela est un peu plus propre ...

<logic:lessThan name="currentIndex" value="${myCollectionSize - 1}"> 
    Some style... 
</logic:lessThan> 
<logic:equal name="currentIndex" value="${myCollectionSize - 1}"> 
    Some style on the last element... 
</logic:equal> 

ou CSS:

.someClass:last-of-type {} 

OU

.someClass:last-child {} 

J'espère que ça aide.