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