2013-03-26 7 views
8

Struts2 ile JSP üzerinde çalışıyorum, iki listeyi yinelemeli ve her birinin <tr/> arka plan kodunu değiştirmem gerekiyor.Struts2, önceki bir kümeyi artırır <s:set /> value

Benim JSP pasajı:

<s:set var="counter" value="0" scope="page" /> 
<s:iterator value="listaContoCapitale" status="i"> 
    <s:iterator value="utilizzi" status="j"> 

    <s:if test="#counter == 0 || #counter % 2 == 0"> 
     <s:set var="trclass" value="'rigaSfondo1'" scope="page" /> 
    </s:if> 
    <s:else> 
     <s:set var="trclass" value="''" scope="page" /> 
    </s:else> 
    <tr class="${trclass}"> 
     ....tds 
    </tr> 
    </s:iterator> 
    <s:set var="counter" value="here i have to change its value (increment it by1)" /> 
</s:iterator> 

benim sayacı iç döngü her adımı artırmaz gerekir. Sayaç değerinimi basit bir struts etiketi ile artırmanın bir yolu var mı? Java betiğini kullanabileceğimi biliyorum ama mümkünse JSP'yi açık tutmayı tercih ediyorum.

+0

Roman yanıta ek olarak, üçlü ile ne demek istiyorsun sınıf kararı mantığının –

+0

kısaltmak için üçlü kullanmayı düşünün artım? – Emaborsa

cevap

13

Bir referans değişkeni oluşturmanız gerekmiyor, yalnızca #i.index veya #i.count numaralarını yineleyicinin içinde kullanın. Bu zaten yineleyici etiketinin kendisi tarafından artırıldı.

"Sayım" 1 tabanlı, "dizin" 0 tabanlı olduğunu unutmayın.

Her zaman docs'u kontrol edin.

yine kendi sayaç gerekiyorsa

<s:set var="counter" value="0"/> 

<s:set var="counter" value="%{#counter+1}"/> 
+0

Ayrı bir sayaca ihtiyacınız vardır, çünkü iç döngü esas alınmalıdır ve dış döngü düştüğünde sıfırlanmamalıdır. –

+0

Bir yineleyicinin temel sayacını kullanamıyorum, eğer kodumu kontrol ederseniz, arka döngüyü ayarlamak için ne dış döngü ne de iç döngünün bana tuhaf gelen bir doğru sayacı vermeyeceğini göreceksiniz. renk (trclass değişken); her halükarda 0 veya 1 ile başlayıp başlamadığı farketmez .... Soruyu göndermeden önce çözümünüzü denedim () ama JSP sayfasını çevirerek bana bir hata verdi. Yarın tekrar kontrol edeceğim ... – Emaborsa

+0

tek tek kontrol etmek için 'j.even' veya 'j.odd' boole değerleri kullanabilirsiniz. Son ifade çalışmalı, değil mi? –

İlgili konular