用户登录权限的原因。我把User这个类放进
下面登录成功,我就放进去。
ActionContext.getContext().getSession().put("user",user);
如果是需要权限的,我就要拿出来检查ActionContext actionContext =ActionContext.getContext();
User user=(User)actionContext.getSession().get("user");最后,登录退出,就要删除ActionContext context = ActionContext.getContext();
        context.getSession().remove("user");
//结果,我在删除的时候,马上调用context.getSession().get("user")==null  返回true可是我又在另外的action中又拿到了User这个类的值。
主要原因如下:action是通过spring注入的。 不会通过new Object()来修改。所以在这里,我没办法改掉Spring里面存储的struts2 会话值。
其实我在action中使用的ActionContext context = ActionContext.getContext();就是一个副本。
所以在action中改不了这个ActionContext 中的基本值

我主要目地是要修改ActionContext 中的session Map中的值

解决方案 »

  1.   


    applicationContext.xml中的拦截器
        <bean id="authorityInterceptor" class="com.huayiluo.commonality.AuthorityInterceptor"></bean>
        struts.xml 中的action <interceptor name="authority" class="authorityInterceptor"/>我试过直接使用
    <interceptor name="authority" class="com.huayiluo.commonality.AuthorityInterceptor"/>
    来让每次的拦截都不通过spring来注入。(以为可以可以修改session中的map值。可是还是失败了)
      

  2.   

    我还是第一次看到把拦截器也扔给Spring的.! LZ是个人才.!
    拦截器让Struts2自己干.!  Action扔给Spring就可以了.!
    既然你是做权限判断,那么判断不是应该在拦截器里面完成吗.?
      

  3.   

    你只是把你的action交给Spring去管理, Spring又不管理ActionContext,这两者是根本不会挂钩的捏.!
    一个是Spring的事,一个是Struts2过滤器的事.! 我实在想不通这两者怎么能扯到一块去
      

  4.   

    直接获得httpsession然后删除它。看看什么效果
      

  5.   

    谢谢楼上2位的指点。我现在改一下。把拦截器不给spring