[Seasar-user:8861] Re: [Teeda] ForEach 内でボタンを使用して押されたインデックスを取得する方法
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 7月 2日 (月) 13:28:50 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" />
よろしくお願いします。
---
米林 正明
[E-MAIL ADDRESS DELETED]
Seasar-user メーリングリストの案内