コマンド オブジェクトがあり、プロパティ内FaxForm
のオブジェクトのリストを保持しています。 FaxStatus
faxStatusList
public class FaxForm {
private List<FaxStatus> faxStatusList;
public void setFaxStatusList(List<FaxStatus> faxStatusList) {
this.faxStatusList = faxStatusList;
}
public List<FaxStatus> getFaxStatusList() {
return faxStatusList;
}
}
最初に、以下を実行してオブジェクトをバインドする JSP ページを作成しました。
<c:forEach items="${esaFaxForm.faxStatusList}" var="item" varStatus="loop">
<tr class="tableAltBackground">
<td>
<form:checkbox path="faxStatusList[${loop.index}].selected"/>
</td>
<td>
<form:select path="faxStatusList[${loop.index}].status" items="${esaFaxForm.statusOptions}" onchange="checkThisBox(this);"/>
</td>
<td>
<a href="${statusContUrl}?id=${item.id}&status=${item.status}" onclick="openFaxWindow('${viewFaxUrl}?id=${item.id}', ${loop.index});">${item.name}</a>
<form:hidden path="faxStatusList[${loop.index}].name"/>
</td>
<td>
<a href="${statusContUrl}?id=${item.id}&status=${item.status}" onclick="openFaxWindow('${viewFaxUrl}?id=${item.id}', ${loop.index});">${item.id}</a>
<form:hidden path="faxStatusList[${loop.index}].id"/>
</td>
</tr>
</c:forEach>
ただし、forEach ループとインデックスを使用せずにバインディングを行う方法を見つけようとしています。Spring Web サイトの例は、パスをリスト名に設定することによるバインディングを示しています。プロパティをバインドする方法はありますか? 私はこれを試しましたが、失敗します:
<form:checkbox path="faxStatusList.faxStatus.selected"/>
<form:select path="faxStatusList.faxStatus.status" items="${esaFaxForm.statusOptions}"/>
faxStatusList には getter メソッドと setter メソッドがあり、FaxStatus 変数にはそれぞれ getter/setter プロパティがあります。「Bean クラスのプロパティ 'faxStatusList.faxStatus' が無効です...」というエラーが表示されます。