我在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);
答案 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)
听起来不错。调试您的拦截器代码(断点或某些日志行)以检查它是否被调用。和/或复制拦截器的完整代码。