[Seasar-user:12707] Re: Renderer内部で指定したActionMethodが呼ばれない
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2008年 1月 31日 (木) 20:30:34 JST
小林 (koichik) です.
Date: Thu, 31 Jan 2008 19:49:10 +0900
From: <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:12706] Renderer内部で指定したActionMethodが呼ばれない
> 参考資料のソースのように、HtmlCommandButtonRendererを
> extendしたカスタムタグを作成し、Renderer内部でActionMethodを
> 設定(ソース内の−−−→の箇所)しています。
> ですが、このアクションメソッドが呼び出されないケースが
> あります。
Teeda の場合,リクエストごとに UIComponent ツリーを
毎回保存するわけではなく,最初のリクエストで作成された
ツリーの状態を保存して,それを繰り返し使います.
そのため,最初のリクエスト時にこのボタンが
レンダリングされなかった場合は
encodeHtmlCommandButtonEnd() が呼ばれず,
setAction() もされない状態で UIComponent ツリーが
保存され,それが使われ続けてしまいます.
発生するケースとしないケースの違いは最初の
リクエストで決まっているのではないでしょうか?
もし JSP 側で一々 action 属性を指定しなくても
いいようにするということなら,HtmlCommandButton の
サブクラスを作成して,コンストラクタで MethodBinding を
設定してしまう方が無難かと.
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
Seasar-user メーリングリストの案内