スタック オーバーフローの皆さん、こんにちは。最近、Struts アプリケーションで問題が発生しました。一部のBean値を正しく表示するjspがあります(コードの関連部分のみを貼り付け、極端に単純化しました):
<table>
<logic:iterate name="bean" property="list1" id="listItem">
<tr>
<td>
<html:checkbox name="listItem" property="selected">
</html:checkbox>
</td>
</logic:iterate>
</table>
私の Bean には、getter と setter を持つ list1 プロパティがあります
private List<RandomObject> list1;
public List getList1() {
return list1;
}
public void setList1(List list1) {
this.list1=list1;
}
私のサブビーンには選択されたプロパティがあります:
private boolean selected;
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
ここで、この JSP を入力すると、正しい値が取得されます。つまり、DB 内のマップされたオブジェクトが selected=true の場合、チェックボックスがオンになっています。私が得られないのは、このフォームで行った変更を保存する方法です。送信すると、すべての変更が失われます。送信にリンクされた StrutsAction をデバッグで入力すると、取得した ActionForm はすべての興味深い値を既に失っているため、これは純粋な Struts 関連です。また、保持したい値がメインBeanに直接保存されているのではなく、サブBeanのプロパティであるという事実に関係しているように感じます。同じページには他にもたくさんあるからです問題なく保存できるメイン Bean のプロパティ。
私は何を取りこぼしたか ?