【问题标题】:Session management in interceptors and action of struts 2 application拦截器中的会话管理和 struts 2 应用程序的操作
【发布时间】:2010-08-24 20:12:06
【问题描述】:

我在 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);

【问题讨论】:

  • 拦截器定义:

标签: session struts2 interceptor struts-action


【解决方案1】:

拦截器定义缺少我之前的帖子。不知道为什么,但是我提交的时候就有了。

拦截器定义:

    <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>

【讨论】:

    【解决方案2】:

    听起来不错。调试您的拦截器代码(断点或某些日志行)以检查它是否被调用。和/或复制拦截器的完整代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      • 2023-03-31
      • 1970-01-01
      • 2021-06-22
      相关资源
      最近更新 更多