0

我在 struts2 中遇到会话管理问题。我在拦截器的会话中设置一个属性,这是我整个应用程序的默认拦截器。在我的操作中,我正在实现 SessionAware 接口并将会话作为地图抓取。但是我在拦截器中设置的属性在我的操作中的会话映射中不存在。我是否错过了 baseAppStack 中的任何默认拦截器,或者知道我错过了什么?

我在 struts.xml 中的拦截器定义:

我的拦截器代码:

    HttpSession session =  request.getSession (true);
 params = (SessionParams)session.getAttribute(Constants.KEY_SESSION_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 回答