2012-03-09 2 views
1
<form:form id="myFRM" action="${myURL}" method="POST" modelAttribute="myPOJO"> 
<c:set var="i" scope="page" value="0"/> 
<c:forEach items="${myPOJO.myLIST}" var="myItem"> 
    <tr class="ui-state-default" > 
    <td><form:checkbox path="myLIST[${i}].aBool" value="true"/></td> 
</tr> 
<c:set var="i" value="${i + 1}" scope="page"/> 
</c:forEach> 

これを行うより良い方法はありますか?春のmvcとフォームバッキングオブジェクトとしてリストを反復する

myPOJOはリストを含むクラスです。これは純粋にこの目的のために作成されたものです。リストをフォームバッキングオブジェクトとして直接参照する方法はありますか?

答えて

4

c:forEachタグはvarStatusという名前の属性を持っています。これにより、ループ状態変数に名前が割り当てられます。この変数には、現在の反復のインデックス(ゼロベース)とカウント(1ベース)があります。

<form:checkbox path="myLIST[${loopStatus.index}].aBool"/> 

を、あなたは余分なi変数を必要としません。

<c:forEach items="${myPOJO.myLIST}" var="myItem" varStatus="loopStatus"> 

と、これを:

これを試してみてください。

また、value="true"の部分がチェックボックスに必要ないと思われます。

1

$ {myPojo.fooBool}という式を評価しています。これは、文字列 "false"を返します。

あなたが書いているものを実際に

は次のとおりです。

<form:checkbox path="false" value="true"/>

だから、春はあなたの豆に「偽」という名前のプロパティを探して(代わりに「fooBool」を探して)されます。

試し書き:

<form:checkbox path="fooBool" value="true"/>

関連する問題