[Seasar-user:20725] Re: getComponent() で BeanWrapper が返ってくる (Re: HotDeployモードでIllegalArgumentException)

Yasuo Higa [E-MAIL ADDRESS DELETED]
2011年 4月 15日 (金) 21:54:56 JST


ひがです。

> 白井といいます。
> 
> さらに調べてみると、
> 自動バインディングされるべき componentB を取得している
> このような部分で、
> 
>      componentDef.getContainer().getComponent("componentB")
> 
> BeanWrapper (bean = componentB) クラスのオブジェクトが返って 
> きます。
> 
componentBがアクションフォームのプロパティ名と
同一ではありませんか?

SAStrutsのS2RequestProcessor#exportPropertiesToRequest()で
フォームのプロパティ名でリクエストの属性に設定しているので
アクションフォームにcomponentBというプロパティがあるとそうなる
可能性があります。

どういうときにその可能性があるかというと、

SAStrutsのS2RequestProcessor#doForward()を見てください。
isExportablePath()がtrueを返すのは、.がついていて.doが
ついていないものです。

これは通常、JSPのパスを返します。
.xxxのようなパスにフォワードしているけど、実はそれは
アクションだというときに最初の問題が起きる可能性が
あります。


> 一方で、
> getComponent("componentA") はそのまま ComponentA クラス 
> のオブジェクトが
> 返ってきます。
> 
> 
> この BeanWrapper が返ってきているというのが
> おそらくこの IllegalArgumentException エラーの原因であ 
> ろうと思うのですが、
>   getComponent()がBeanWrapperを返してくる
> というのはどのような原因が考えられますでしょうか?
> 
> 
> 【環境】
> 
> s2-frameworkのバージョンは2.4.43です。
> s2-extensionのバージョンは2.4.43です。
> s2-tigerのバージョンは2.4.43です。
> sastruts 1.0.4sp7
> Hot Deploy
> 
> 
> よろしくお願いいたします。
> --
> 白井 薫
> 
> 
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 


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