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