[Seasar-user:9053] Re: [S2Struts]JSP からのコンポーネントの取得について
Yasuo Higa
[E-MAIL ADDRESS DELETED]
2007年 7月 10日 (火) 10:09:54 JST
ひがです。
> 仙波と申します。
>
> ひがさん、ご返答ありがとうございます。
>
> > ということは、Filterの順番ではないでしょうか。
> > Seasar2用のFilterの方を最初に指定してください。
>
> 順番は、下記にようにs2filterを最初に指定しております。
>
> <filter-mapping>
> <filter-name>s2filter</filter-name>
> <url-pattern>/*</url-pattern>
> </filter-mapping>
>
> <filter-mapping>
> <filter-name>s2strutsfilter</filter-name>
> <url-pattern>/*</url-pattern>
> </filter-mapping>
>
> <filter-mapping>
> <filter-name>encodingfilter</filter-name>
> <url-pattern>/*</url-pattern>
> </filter-mapping>
>
> <filter-mapping>
> <filter-name>hogeFilter</filter-name>
> <url-pattern>*.do</url-pattern>
> <dispatcher>REQUEST</dispatcher>
> <dispatcher>FORWARD</dispatcher>
> <dispatcher>INCLUDE</dispatcher>
> <dispatcher>ERROR</dispatcher>
> </filter-mapping>
>
>
> Actionで明示的にExceptionを発生させたケースを
> 検証していたのですが、下記の2パターンで結果が異なりました。
>
> (ケース1)struts-config.xmlにglobal-exceptionsを記述する場合。
>
> → コンポーネント取得可能。
>
>
> (ケース2)struts-config.xmlにglobal-exceptionsを記述しない場合。
>
> → コンポーネント取得不可。
>
> [ESSR0007]sessionはnullあるいは空であってはいけません
> のメッセージが出力されます。
>
hogeFilterで例外が発生した場合、Strutsがどういう挙動をするのか
は、(Strutsの)ソースを確かめる必要があると思いますが、
global-exceptionsになにも記述されていないときは、Strutsは
なにもしない気がするので、たぶん、ServletContainerまかせに
なると思います。
そのときに、filter-mappingのdispatcherの指定がデフォルトだと
s2filterに処理がわたらないのではないでしょうか。
s2filterに<dispatcher>ERROR</dispatcher>を
加えるとどうなるでしょうか。
よろしくお願いします。
--
Yasuo Higa
[E-MAIL ADDRESS DELETED]
Seasar-user メーリングリストの案内