[Seasar-user:8865] Re: [Teeda] ForEach 内でボタンを使用して押されたインデックスを取得する方法
■アイキュー【清水敏明
■アイキュー【清水敏明
2007年 7月 2日 (月) 14:51:24 JST
米林様
清水です。再回答ありがとうございます。
> 米林です。
>
> ----- Original Message -----
> From: "Shimizu" <[E-MAIL ADDRESS DELETED]>
> Sent: Sunday, July 01, 2007 5:36 PM
>
> > 清水です。回答ありがとうございます。
>
> > > onclick時のJavaScriptにて、f.clickIndex.valueを
> > > alertでデバッグしてみて下さい。
> > > まずはクライアント側でクリックしたインデックスが正しく
> > > 取得出来るか確認して頂けますか?
> > >
> > 確かに参照元のソースでは、正しく取得出来ていました。
> >
> > こちらで作成したソースの問題点は2つありました。
> >
> > 1.form タグの id名が"Form"で終了していなかった。
> >
> > 最初にソースを書いたとき、id名を任意にしていたため、javascript内の
> > document.フォームID名 でformオブジェクトを参照することができていませんでし
> た。
> > このid名規約はどの規定によるものなのでしょうか?
>
> formにつけるidは、xxxFormというようにFormで終わらせて下さい。
> ただ、ドキュメントに明記されてないようですね。
> これはドキュメントに記載するようにします。
>
了解致しました。
> > 2.aaaItems の初期値設定をprerender()で行っていた。
> >
> > 1でid名を"Form"で終了させると、clickIndexを参照できるようになりました。
> > しかし、aaaItemsの各要素をclickIndexで参照しようとしてもNullpointerException
> > となり、参照できませんでした。
> > 元のソースと異なるところは、aaaItems の初期値設定を prerender()で行っている
> ところ
> > です。prerender()内で初期値設定が正しく行われていることは確認しているのです
> が、
> > それを、実際のボタン処理メソッド内でclickIndexを用いて参照しようとすると参照
> でき
> > ません。getAaaItems()メソッド内で初期化させると参照できるようになりました。
> > prerender()やinitialize()メソッド内で初期化したaaaItemsの各要素の参照は、処
> 理ボタ
> > ンメソッド内では参照できないのでしょうか?
>
> 推奨されるのは初期化処理はinitializeメソッドで処理すべきです。
> prerenderメソッドは画面が描画される直前に毎回呼び出されます。
> ですので、初期化処理をprerenderにいれるのはお薦めできません。
>
> 補足ですが、今回ヌルポが起きている原因はinitialize, prerenderメソッド
> には関係が無く、おそらくhiddenにItemsSaveを記述していないからでは
> ないでしょうか。
> hiddenにaaaItemsSaveを記述してみて下さい。
> <INPUT type="hidden" id="aaaItemsSave" />
>
ItemsSave記述の追加で、受け渡されるようになりました。
ドキュメント等を見ると、次の画面に引き継ぐ場合、Validationエラーの際に再表示
する場合に必要とありましたが、prerender()、initialize()、ボタン処理メソッド間
で引き継ぐ場合にも必要ということになりますね。
因みにItemsリストをDtoで記述する場合、DtoクラスはSerializableである必要は無い
ようですが、ItemsSaveを記述した場合は必須になるようです。その辺の規定はドキュ
メント化されているでしょうか?
以上、宜しくお願い致します。
Seasar-user メーリングリストの案内