[Seasar-user:12426] Re: tbody内のinput値がValidatorメソッドで取得できません。

gaku furukawa [E-MAIL ADDRESS DELETED]
2008年 1月 10日 (木) 11:13:08 JST


furukawaです。

小林さん、ありがとうございました。
勉強になりました。

Map paramは、名前の関係から使用できませんでしたので、
リクエストパラメータを独自に取得して実装することができました。

またよろしくお願い致します。

-----Original Message-----
From: [E-MAIL ADDRESS DELETED]
[mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of Koichi Kobayashi
Sent: Wednesday, January 09, 2008 6:00 PM
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:12420] Re:tbody内のinput値がValidatorメソッドで取得で
きません。

小林 (koichik) です.

Date:    Wed, 9 Jan 2008 14:03:38 +0900
From:    "gaku furukawa" <[E-MAIL ADDRESS DELETED]>
To:       <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:12414] tbody内のinput値がValidatorメソッドで取得できま
せん。

> seasar + teeda で、tbodyの中にinput text のコンポーネントを配置して、
> その値を getXXXValidator メソッド内で、チェックしたいと思っていたのです
が、
> validatorメソッド内では値を取得することができませんでした。
> tbodyに指定したitemsオブジェクトもValidatorメソッド内ではnullになっていま
し
> た。

JSF の仕様ですね.
JSF では,処理を 6 つのフェーズで行います.

1.RESTORE_VIEW
2.APPLY_REQUEST_VALUES
3.PROCESS_VALIDATIONS
4.UPDATE_MODEL_VALUES
5.INVOKE_APPLICATION
6.RENDER_RESPONSE

入力パラメータの内容は 2 の APPLY_REQUEST_VALUES
フェーズで UIComponent ツリーに反映され,
4 のUPDATE_MODEL_VALUES フェーズで Page に
反映されます.

+---------+   2   +-------------+   4   +------+
| request | ----> | UIComponent | ----> | Page |
+---------+       +-------------+       +------+

詳細は JavaExpert #02 の Teeda 特集や,
JSF の解説などを参照してください.

getXxxValidator() は 3 の PROCESS_VALIDATIONS
フェーズで呼び出されるので,Page クラス側の情報を
参照することはできません.
# できるけど,コンテナから取得された状態のままで
# リクエストの内容は反映されてない.

getXxxValidator() でリクエストの内容を見るには,
Page クラスに Map 型の param プロパティを
持たせてください.

forEach を使っているとリクエストパラメータを
チェックするのはかなり大変だと思うので,
getXxxValidator() で頑張るよりは,Validator の
中で頑張る方がまだいいんじゃないかと思います.

> doXXX メソッドへ移ると、tbody に指定したItemsオブジェクトから、
> 値を取得することができたのですが、

doXxx() は INVOKE_APPLICATION フェーズで
呼び出されるためです.


--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>

_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user


Seasar-user メーリングリストの案内