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