2010-11-23 5 views
0

私は/ helloのサーブレットコンテキストを持つWebアプリケーションでjsp(test.jsp)を処理しています。私は、次のことをやっている:c:importコンテキスト間で属性を要求する

<c:import url = "/other/altTest.jsp" context="/" /> 

その要求がなtest.jspに利用できる属性表示されますが、CからインポートJSPには使用できません:インポート(altTest.jsp)、Iは、コンテキストパラメータに起因する疑いがあります。誰かがこれの背後にある理由を説明して、リクエスト属性にアクセスできるjspをインポートする別の方法を提案してもらえますか?

答えて

3

c:importは、新しい独立したHTTPリクエストを処理します。ファイルが同じコンテキストにあっても、親JSPが開かれたのと同じ要求にアクセスすることはできません。

情報をリクエストパラメータとして渡すか、またはセッション属性として保存し、インポートされたJSPでセッションからセッションを削除することをお勧めします。それでも、これは異なるコンテキストが同じセッションを共有することを要求します。これはservletcontainerレベルで構成可能です(例えばTomcatの場合)emptySessionPath属性をtrueに設定してcontext.xmlに設定します。

代替は、あなたがRequestDispatcherを取得し、最終的にそれにforward()を呼び出し、その後(crossContext属性はcontext.xmltrueに設定されている場合のみ)、および他のサーブレットコンテキストを取得するためにServletContext#getContext()を行うことを特徴代わりにサーブレットを使用することです。これはJSPタグでは不可能です。

関連する問題