0

struts2 でのセッション管理に問題があります。アプリケーション全体のデフォルトのインターセプターであるインターセプターのセッションで属性を設定しています。私のアクションでは、SessionAware インターフェイスを実装し、セッションをマップとして取得しています。しかし、インターセプターで設定した属性は、アクションで使用しているセッション マップには存在しません。baseAppStack のデフォルトのインターセプターを見逃していましたか、それとも何が欠けているのでしょうか?

struts.xml でのインターセプターの定義:

私のインターセプターコード:

    HttpSession session =  request.getSession (true);
 params = (SessionParams)session.getAttribute(Constants.KEY_SESSION_PARAMS);

if (params == null) {

        //some code to populate params

session.setAttribute(Constants.KEY_SESSION_PARAMS, params); }

私のアクションコード:

Map session = getSession();
SessionParams params = (SessionParams) session.get(Constants.KEY_SESSION_PARAMS);
4

2 に答える 2

0

インターセプターの定義に、以前の投稿がありません。理由はわかりませんが、提出したときに持っていました。

インターセプターの定義:

    <interceptors>
        <interceptor name="baseInterceptor" class="com.interceptors.BaseInterceptor">
        </interceptor>

        <interceptor-stack name="baseAppStack">
            <interceptor-ref name="baseInterceptor" />
            <interceptor-ref name="defaultStack" />
        </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="baseAppStack"></default-interceptor-ref>
于 2010-08-24T20:15:12.680 に答える
0

いいですね。インターセプター コード (ブレークポイントまたはログ行) をデバッグして、それが呼び出されていることを確認します。および/またはインターセプターの完全なコードをコピーします。

于 2010-08-27T19:16:12.507 に答える