[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 メーリングリストの案内