2013-03-26 29 views
8

私はStruts2を使ってJSPで作業しています.2つのリストを反復して、それぞれ<tr/>のバックグラウンドコードを変更する必要があります。Struts2は前のセットをインクリメントします<s:set />の値

私のJSPスニペット:

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

私はカウンター内側のループ上のすべてのステップをインクリメントする必要があります。単純なストラットタグでカウンタの値を増やす方法はありますか?私はJavaスクリプトレットを使用できることは知っていますが、可能であればJSPを明確に保ちます。

+0

が必要な場合は、三元で何を意味するか、クラス決定ロジック –

+0

を短縮する三元の使用を検討? – Emaborsa

答えて

13

参照変数を作成する必要はありません。イテレータ内に#i.indexまたは#i.countを使用するだけです。イテレータタグ自体によって既にインクリメントされています。

「カウント」は1ベースであり、「インデックス」は0ベースであることに注意してください。

常にdocsをチェックしてください。

あなたはまだあなた自身のカウンタローマの答えに加えて

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

インクリメント

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

内側のループに基づいている必要があり、外側のループがバンプアップしたときにリセットする必要がないため、別のカウンタが必要です。 –

+0

イテレータの基本カウンタを使用できません。コードをチェックすると、外側ループも内側ループも、奇数から偶数への交互の正しいカウンタを与えないことがわかります。バックグラウンドを設定しますカラー(trclass変数);いずれにしても、0または1で始まるかどうかは関係ありません....私の質問を投稿する前に、私はあなたの解決策を試しました( )しかし、それは私にJSPページを翻訳することによってエラーをもたらしました。明日私はそれをもう一度試してみよう... – Emaborsa

+0

それは奇妙なことを確認するか、 'j.even'または' j.odd'を使うこともできます。それはブール値です。最後の声明はうまくいくはずですね。 –

関連する問題