A Day In The Life

とあるプログラマの備忘録

iterateタグのidとpropertyは同じ名前にしましょう。

iterateタグのid属性とproperty属性の名前を変えていたため思わぬところでハマってしまった。

public class SampleForm extentds ActionForm{
 private List resultList = new ArrayList();
 …
 ……
}

こんなActionFormがあったとしてJSP

<logic:iterate id="list" name="SampleForm" property="resultList"><html:text name="list" property="field1" indexed="true" />
……
</logic:iterate>

と書くとテキストボックスの値がセットされない。

これは出力されるHTMLを見ればすぐにわかる。

<input type="text" name="list[0].field1" value="">

list[0]って何?resultList[0]じゃないんですか!

HTMLで出力されるのはid属性のほうなんだなこれが...。

これじゃあサブミットしても値がセットされないわけだ。

iterateタグのidとpropertyは同じ名前にするのが無難です。

これのせいで5時間もハマッちまったよ。

参考

全然違うトピックだけどここ読んでて気づいた...