在一个SSH2框架的项目中,现在遇到一个问题。
有一个员工表,现在有根据不同属性查询员工信息的需求。如根据员工id,根据员工姓名,员工性别,员工证件号查询员工信息。根据员工性别查询,显然查出很多条记录,在分页查询时,第一次,用hibernate的hql查询,传入pageNow,pageSize返回记录总数,和一个List集合。查询都对,现在就是当第一次查询到第一页的记录后,当用户单击下一页的时候,我再次调用Action中的方法时,
原来的查询条件已经为空了。所以,如果我想再次查询,必须重新传入用户填写的查询条件。我想有没有什么好的解决方法。没有的话,我也只能将查询表单页面和查询结果显示放在同一个页面了。呵呵。

解决方案 »

  1.   

    将hql查询文本也传到结果页面用一个hiden input保存起来,不也可以么。
      

  2.   

    放在同一个页面中吗,需要单击下一页时,重新提交表单。可以传递参数或者将Action设置成单例模式,这样每次提交的时候,就不会重新创建新的实例。但有的方法又必须让Action不能为单例模式。难道将Action一分为二,这样逻辑上有点怪。
      

  3.   

    这样太好内存。可以尝试按照这样来计算
    1.按照sql计算出数据的个数
    2.按照当前页码和页面显示条数,计算当前页面应该从多少条开始获取数据,只查询出当前页的数据,这样比较合理点。
      

  4.   

    解决了,将Action一分为二,分成添加员工的Action,这个Action每次请求到来时,都创建一个新的action实例另一个查询员工Action,这个Action为单例模式,每次请求到来时,返回同一个Action实例。这样问题很好的解决了,同时每个Action内部的逻辑结构也更加清晰了。呵呵。继续努力!明天结贴。
      

  5.   

    这个简单,你第一次查询,使用的那些个条件,再查询完结果返回到页面上的时候,一般也会同list一起传回到页面上,这样,你就拿到了上次查询时所使用的查询条件了,然后你点击下一页时,可以使用js实现,只需要把这些同步传回来的查询条件绑定到action的url中,继续传递到上次的那个action中,这时候你的action中变的只是分页变量,其他不变。就行了,你自己试试看......
      

  6.   

    多取点? 那这叫分页?
    你传数据到控制层不传当前页数和操作动作(pre|next|page)的吗?传当前页数或者请求页数不就可以了?
      

  7.   

    使用pagelib 应该很简单,不会用就摆渡下。