- - PR -
JSFの警告について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-05-25 08:59
不可解ですね.もしそれがpanelStackの仕様だとしたら,panelStackなど使う必要が無く 自分でrenderedを指定して,表示したりしなかったり制御すれば良いことになりませんかね. | ||||
|
投稿日時: 2006-05-25 22:57
ちょっと説明が足りなかったようです。renderedプロパティをfalseにする必要があるのは
input系のコンポーネントだけです。おそらく、UIコンポーネントツリーが復元された後の リクエストから入力値を取得するフェーズで、UIコンポーネントツリーにはコンポーネントが あるのに、リクエストから入力値が取得できないというのが問題になっているのではないかと 推測しています。 従って、input系のコンポーネント以外なら問題なく使えますので意外と使い勝手は良いかと 思いました。但し、少し不親切だなぁとも。。。 | ||||
|
投稿日時: 2006-05-26 13:33
この際なので,少し詳しく説明します.
表示されなくてもコンポーネントは原則としてすべてサーバ側で復元されます. rendered="false"でも.実は<!-- -->でコメントアウトされているものも. Apply Request Valueフェーズでは,コンポーネントツリーのルートから processDecodesというメソッドがツリートラバースをして,各コンポーネントの decodeメソッドを起動します.ただしもしrenderedプロパティがfalseならば それ以上深くはツリートラバースをやりません. ですからFormやPanelGridでrendered="false"であれば,その子コンポーネントは 処理しない仕組みになっています (以上はUIComponentのprocessDecodesのjavadocに書いてあります) ですから,PanelStackのprocessDecodesは当然,現在表示しているPanelだけを トラバースすべきだと思うのですが,TAKEZOさんが遭遇している現象から見て そうではないようなので,不可解だなと思うわけです. | ||||
|
投稿日時: 2006-05-29 13:12
よしだ様、説明有り難うございます。実はその辺りの知識について曖昧な部分が多く
大変参考になりました。また、panelStackですが結局利用するのをやめ、form要素の renderedで対応することにしました。ご指摘の通りpanelStackの利用用途は何を 想定しているんだろうなぁ?という感じですね。 | ||||
|
投稿日時: 2006-05-29 14:09
宣伝になるので恐縮ですが,私の本ではシーケンス図で説明してありますので, まぁ,立ち読みでもして下さい. |