[Seasar-user:9012] Re: [S2Struts]JSPからのコンポーネントの取得について
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 7月 7日 (土) 18:52:39 JST
仙波と申します。
永島さん
ご返答ありがとうございます。
もう少し詳しい情報を記述すべきでした。申し訳ございません。
こちらで再度動作検証を行いました情報を記述します。
【概要】
サーブレットフィルターでExceptionをthrowし、
web.xmlのexception-typeに記述しているJSPへ遷移させる。
JSPで取得したい「Hoge」クラスはinstance="sessionで登録する。
【詳細】
(1)それぞれのファイルの記述は下記になります。
■dicon
<component class="Hoge" instance="session"/>
■web.xml
<exception-type>java.lang.Exception</exception-type>
<location>/jsp/testError.jsp</location>
</error-page>
■サーブレットフィルター
public void doFilter(・・・)
throws IOException, ServletException {
boolean isError = true;
if (isError) {
throw new RuntimeException("・・・");
}
■JSP
<%
S2Container container =
SingletonS2ContainerFactory.getContainer();
try {
Hoge hoge = (Hoge) container.getComponent(Hoge.class);
} catch (Exception e) {
e.printStackTrace();
}
%>
(2)実行結果
(2−1)サーブレットフィルターでExceptionをthrowする場合。
下記のメッセージが出力されます。
org.seasar.framework.exception.EmptyRuntimeException:
[ESSR0007]sessionはnullあるいは空であってはいけません
at org.seasar.framework.container.deployer.
SessionComponentDeployer.deploy(SessionComponentDeployer.java:44)
at org.seasar.framework.container.impl.ComponentDefImpl.
getComponent(ComponentDefImpl.java:94)
at org.seasar.framework.container.impl.S2ContainerImpl.
getComponent(S2ContainerImpl.java:128)
(2−2)サーブレットフィルターでExceptionをthrowしない場合。
JSPからコンポーネントを取得できます。
以上です。
よろしくお願いいたします。
"Katsuhiko Nagashima" <[E-MAIL ADDRESS DELETED]>さん:
2007/07/05 12:36:44
--
> 永島です。
>
> > 2.取得する方法はあるでしょうか?
> > (なければ session.getAttribute で取得しようと思います)
>
> JSPでも
> S2コンテナに登録したコンポーネントは
> SingletonS2ContainerFactory
> を利用して
> SingletonS2ContainerFactory.getContainer().getComponent(Hoge.class)
> のようにすれば取得できると思います。
>
> インスタンスを生成した時点で結果的にsessionに格納されるとは思いますが、
> 直接session.getAttribute()で取得するのではなく、
> 上記のようにして取得したほうがよいと思います。
>
>
>
> 07/07/03 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]> さ
んは書きました:
> > 仙波と申します。
> >
> > JSPからのコンポーネントの取得について質問があります。
> >
> > web.xml や struts-config.xml に定義したエラーページからは
> > S2コンテナに登録したコンポーネントを取得できないようです。
> >
> > ここでいうエラーページは下記のタグに記述しています。
> >
> > web.xml
> > <global-exceptions>
> >
> > struts-config.xml
> > <error-page>
> >
> >
> > コンポーネントはセッションに格納しています。
> >
> > <component class="HogeImpl" instance="session" />
> >
> >
> > 以下質問です。
> >
> > 1.上記現象は仕様でしょうか?
> >
> > 2.取得する方法はあるでしょうか?
> > (なければ session.getAttribute で取得しようと思います)
> >
> >
> > 使用しているバージョンは s2-struts-1.2.9.jar です。
> >
> >
> > 以上よろしくお願いいたします。
> >
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> >
>
>
> --
> Katsuhiko Nagashima
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内