[Seasar-user:14768] Re: Coolデプロイ設定で、親PageクラスのAjaxメソッドをコールするとエラーが発生

株式会社Groony安澤徹也 [E-MAIL ADDRESS DELETED]
2008年 6月 20日 (金) 17:11:44 JST


安澤です。
早速のご回答ありがとうございます。

現象発生のメカニズムよく分りました。
Ajax の呼び出しは具象クラスに対して行うようにいたします。

以上宜しくお願い致します。

> 小林 (koichik) です.
>
> Date:    Fri, 20 Jun 2008 15:46:29 +0900
> From:    株式会社Groony安澤徹也 <[E-MAIL ADDRESS DELETED]>
> To:      <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:14759] Coolデプロイ設定で、親PageクラスのAjaxメソッドをコールするとエラーが発生
>
>> Coolデプロイ設定で、親Pageクラス(※)のAjaxメソッド(ajaxXxx)をコールするとエラー[javax.servlet.ServletException: Ajax Component
>> Name[hmma_hmma007_hmma007Page] is not found.
>> ]が発生します。
>> Hotデプロイ、Warmデプロイ設定では発生しません。
>
> HOT/WARM deploy は要求されたコンポーネント名
> (この場合は hmma007Page) を探しますが,COOL の
> 場合はファイルシステムを走査して,クラス名から
> コンポーネントを登録します.その際,既に登録済みの
> コンポーネントは登録されません.
> そのため,Hmma00701Page が Hmma007Page より先に
> 見つかると (名前順ではそうなる),Hmma00701Page の
> スーパークラス Hmma007Page もその時点で登録されて
> いると判断されるため,コンポーネントとしては登録
> されません.
> その結果,hmma007Page という名前のコンポーネント名は
> 見つからないということになります.
>
>> また、子クラスにAjaxメソッドを移動するとエラーは発生しません。
>> 何か適切な回避策ありますでしょうか?
>
> Hmma007Page は抽象クラスにしてください.
> もし hmma007.html も存在するなら,Hmma007Page や
> Hmma00701Page の共通のスーパークラスを作成し,
> それを抽象クラスとしてください.
> つまり,
>
> ・サブクラスを持つクラスは抽象クラスにする
> ・具象クラスならサブクラスを持たない
>
> という原則を守ってください.
> その上で,Ajax の呼び出しは具象クラス
> (この例の場合は Hmma00701Page) に対して
> 行ってください.
>
>
> -- 
> <component name="koichik">
>    <property name="fullName">"Koichi Kobayashi"</property>
>    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user 



Seasar-user メーリングリストの案内