[Seasar-user:8534] Re: [S2] XIncludeできません

松崎 学 [E-MAIL ADDRESS DELETED]
2007年 6月 21日 (木) 12:15:55 JST


小林さん

松崎です。お世話になります。

教えていただいた確認方法を試してみました。
その手順で確認すると問題なさそうなのですが、
やっぱりValidatorにはDIされません。。。

1. テストクラスを作って確認
   → getComponentできました。

2. Webコンテナの起動時のログ確認
   → 必要なdiconがロードされていること、
      余計なdiconがロードされていないことを確認しました。

3. teedaServletで確認
   → allValidatorLabels一つだけ見えているか確認しました。

4. deployモード
   → HOT deployで開発しています。
      試しにCOOL deployに変更してみましたが、ダメでした。

他に考えられる理由はありませんでしょうか・・・?


> 余談ですが,Map は OGNL 式を使って次のように
> 書くことができます.
こんな事ができるのですね!ありがとうございます。
かなり見にくいなぁと思ってたので、とても助かります。



On Thu, 21 Jun 2007 02:00:32 +0900
Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> wrote:

> 小林 (koichik) です.
> 
> Date:    Wed, 20 Jun 2007 23:37:46 +0900
> From:    松崎 学 <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:8521] Re: [S2] XIncludeできません
> 
> > > こちらで試したところ,Validator の
> > > setAllValidatorLabels(Map) で HashMap が
> > > DI されました.
> > ソースを見直してみましたが、やはりダメでした。。。
> > diconとValidatorを添付します。
> > (ValidatorはTRequiredValidatorにMapを追加しただけです。)
> 
> 添付のソースと dicon をちょっとだけ変更して
> (パッケージとか) HOT deploy で試してみましたが,
> ちゃんと DI されました.
> 
> Validator のソースと allValidatorLabels.dicon
> そのものには問題がないように思います.
> 
> あと可能性があるのは allValidatorLabels という
> 名前のコンポーネントが重複していることでしょうか.
> 
> S2TestCase を継承したテストクラスで
> 
>     protected void setUp() {
>         super.setUp();
>         include("app.dicon");
>     }
>     public void test() throws Exception {
>         Map labels = (Map) getComponent("allValidatorLabels");
>     }
> 
> とやってみてください.
> 
> また,allButtonLabels など,allValidatorLabels 以外の
> プロパティを Validator に持たせてどうなるか確認してください.
> 
> 後は...
> Web コンテナの起動時に
> 
> S2Containerを作成します。path=〜
> 
> というログが出ていると思うので,allValidatorLabels.dicon など
> 必要な dicon がロードされていること,余計な dicon が
> ロードされていないことを確認してください.
> 
> また,web.xml を次のように変更して
> 
>     <servlet>
>         <servlet-name>s2servlet</servlet-name>
>         <servlet-class>org.seasar.framework.container.servlet.S2ContainerServlet</servlet-class>
>         <init-param>
>             <param-name>configPath</param-name>
>             <param-value>app.dicon</param-value>
>         </init-param>
>         <init-param>
>             <param-name>debug</param-name>
>             <param-value>true</param-value><!-- ここを true に -->
>         </init-param>
>         <load-on-startup>1</load-on-startup>
>     </servlet>
> 
> http://localhost:8080/webapp/teedaservlet?command=list
> 
> のようにすることでコンポーネントの状態を
> 確認することができます.
> allValidatorLabels がちゃんと (一つだけ) 見えているか
> 確認してください.
> 
> それから,DI されないのは HOT deploy でしょうか?
> COOL deploy にするとどうなるでしょうか?
> 
> 
> 
> P.S.
> 余談ですが,Map は OGNL 式を使って次のように
> 書くことができます.
> 
>     <component name="allValidatorLabels" class="java.util.Map">
>         #{
>             "inAppCd" : #{
>                 "JPN" : "申請者",
>                 "ENG" : "english"
>             },
>             "inSts" : #{
>                 "JPN" : "状態",
>                 "ENG" : "english"
>             },
>             ...
>         }
>     </component>
> 
> <initMethod> を使って組み立てるよりもスッキリと
> 書けると思います.すでに手遅れかもしれませんが...
> ご存じでしたらごめんなさい.
> # 7000 行近い dicon は初めて見たもので.(^^;
> 
> 
> -- 
> <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 メーリングリストの案内