日期:2014-05-17  浏览次数:20733 次

SSH2 服务器的保留值,不清空的问题
以前都在用SSH,近期有项目用了SSH2,搭建好了,程序能跑了,不过发现了一个问题,真有点搞不懂了,请教一下。

也许看标题不是很清楚是什么问题,还是举例说明吧:
在MODEL,ACTION,BO中,定义了类


class XModel {
   private long id;
   private String name;
   //以下的get 、set的函数就不写了
   //......
}

class XAction extends ActionSupport{
    
     XBo xbo;
     XModel xmodel; 

     public String list(){

         List<XModel> l =xbo.getList(xmodel);
         //打印成为JSON......
         return null;

     } 
     //以下的get 、set的函数就不写了
     //......

}

class Bo{
   //.....
   public List<XModel> list(xmodel){
    
       String hql="...... ";
       /// 查询时,以model.id,xmodel.name作为条件
       List<XModel> l;
       if(!nullToSpace(xmodel.name).equal("")){
           hql +=" where name=? ";
           l=this.xdao.find(hql,new Object[]{xmodel.name}); 
       }else
            l=this.xdao.find(hql);

      return l;
   }
   //......

}


那么我用电脑A上,在前端发起查询请求时,提交了查询条件:xmodel.name=xx1,

然后我在电脑B上,访问此查询功能页面的时候,没有提交任何查询条件;但是发现服务器依然保留这xmodel.name=xx1的值,返回的结果与在电脑A上的结果一样,这是什么问题呢?

------解决方案--------------------
第一,第二次请求,在execute方法中,接收的xmodel对象打印一下(在查询之前)
第二,给setXmodel方法加个断点,看看第二次注入了没。
------解决方案--------------------
struts的请求是独立的线程,所以不会有你说的共用module的问题,建议仔细测试下。
------解决方案--------------------
这个问题还是一步一步debug吧。首先A上是提交表单还是直接访问这个url,你直接url访问的话是执行的get。另外你在A上把那个值设成2,然后B再访问试试,看会不会变成2
------解决方案--------------------
引用:
Quote: 引用:

第一,第二次请求,在execute方法中,接收的xmodel对象打印一下(在查询之前)
第二,给setXmodel方法加个断点,看看第二次注入了没。


第一次请求时,我提交的参数为xmodel.name=xx1,XACTION 中的变量xmodel被实例化,
第二次请求时,我们有提交任何东西,理论上xmodel应该为NULL(因为如果我第一次请求时,如果不提交xmodel.name=xx1,那么xmodel==null),但打印出来还是xmodel.name=xx1

我说第二次的时候给setXmodel()的方法加个断点或者加个输出语句,看看是否执行,你做了没?
------解决方案--------------------
tSysDept是个什么玩意,为什么是静态的。
------解决方案--------------------
我感觉这跟ssh2没设么关系!应该是程序问题吧,还是debug找问题吧,顶一下!
------解决方案-----