[Seasar-user:12779] Re: Renderer内部で指定したActionMethodが呼ばれない
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2008年 2月 6日 (水) 22:08:46 JST
加祥です。
指摘頂いた点を対応しうまくいったので、回答レスつけておきますm(__)m
>発生するケースとしないケースの違いは最初の
>リクエストで決まっているのではないでしょうか?
⇒調査した結果、最初のリクエストの状態で、発生条件を絞り込むことができました。
・初回、自前カスタムタグのrenderedをfalseにした場合
・・・次回以降encodeHtmlCommandButtonEnd内でactionを設定しても有効にならない
・初回、自前カスタムタグのrenderedをtrueにした場合
・・・次回以降encodeHtmlCommandButtonEnd内でactionを設定してるものが有効になる
>もし JSP 側で一々 action 属性を指定しなくても
>いいようにするということなら,HtmlCommandButton の
>サブクラスを作成して,コンストラクタで MethodBinding を
>設定してしまう方が無難かと.
⇒発生条件の絞込みができたので、encodeHtmlCommandButtonEndではなく
CommandButtonTagを継承したクラスで、setPropertiesをオーバーライドし、
setActionProperty(component, "XXXXXXXX");を追加することで、
今回の問題が解決できました。
ありがとうございましたm(__)m
>
>小林 (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 mailing list
>[E-MAIL ADDRESS DELETED]
>https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内