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