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