拦截器中的会话管理和struts 2应用的动作

时间:2010-08-24 20:12:07

标签: session struts2 interceptor struts-action

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

我在struts.xml中的intercepter定义:

       

                   

我的intercepter代码:

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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

相关问题