在进行ssh开发的时候,遇到了一个问题,情景如下:
用户A进入表单页面,各表单项为空。用户A填完信息后提交成功。用户B进入表单页面,各表单项已经有内容了,内容是用户A填写的信息。只有重启tomcat服务,再次进入表单页面,各表单项才为空。初步怀疑是struts2缓存,但是在struts.xml文件里面已经加入了下列语句:
<constant name="struts.objectFactory.spring.useClassCache" value="false" />不行
后来又试了:response.setHeader("Pragma","No-cache"); 
response.setHeader("Cache-Control","no-cache"); 
response.setDateHeader("Expires", 0); 
还是不行
所以,现在不知道是什么原因了。望各位大侠解答一下……

解决方案 »

  1.   

    整合spring的的时候指定范围.<bean id="testAction" scope="prototype" class="com.TestAction" />
      

  2.   


    但是我使用自动注入的方式写的:
    <!-- 使用annotation 自动注册bean,并检查@Required,@Autowired的属性已被注入 -->
    <context:component-scan base-package="cmcchina" />
    这个应该怎么设置啊?
    呵呵,还望各位高手解答一下啊……
      

  3.   

    有这么神奇的事情吗?我还没碰到过。
    按说,那个自动注入的值都是放在request中的,切换一个用户,request中的值肯定没有了。
    所以,会不会是哪里配置,把这个搞成到session中了?
      

  4.   

    哎,这个还不像session,更像是application
      

  5.   

    哈哈,问题解决了,用了四楼的方法
    但因为我用的是自动注入,不知道配置文件里面怎么写,所以在取数据有问题的action里面加入了
    @Scope("prototype")
    代码如下:
    import java.text.SimpleDateFormat;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Controller;@Scope("prototype")
    @SuppressWarnings("serial")
    @Controller
    public class HuanZheAction extends BaseAction {
    @Autowired
    private HuanZheManager hm;
    @Autowired
    private AreaManager am;
    @Autowired
    private UserManager um;