在JSP的页面中包含输入条件查询,输入条件后查询第一页正常,但是翻页后条件就无效了,谁能告诉我个解决办法.

*/
public ActionForward list1(ActionMapping actionMapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
//UserContext user = QingZhiDispatchAction.threadLocal.get();
String strPageNO = (String) request.getParameter("pageNO");
int pageNO = strPageNO == null ? Integer.parseInt("1") : Integer.parseInt(strPageNO);
int listFlag = 1;

String islist = (String) request.getParameter("islist");
if(islist!=null && islist.trim().equals("0"))
listFlag = 0;
String prtid = (String)request.getParameter("prtid");
if(prtid==null||prtid.trim().equals("")) {
prtid = "";
}
YwlsxxFormBean ywlsxxForm = (YwlsxxFormBean)form;
PageInfo pi = new PageInfo();
HttpSession session = request.getSession(true);
QueryCondition qc = (QueryCondition) session.getAttribute(QueryCondition.QUERY_SESSION);

if(qc!=null && listFlag==0)
{
if(qc.getForm()!=null){
ywlsxxForm = (YwlsxxFormBean)qc.getForm();
}
if(qc.getPi()!=null)
{pi = qc.getPi();
}
}
else if(qc==null || listFlag==1)
{

String where = "";
String order = "order by id";
pi.setOrder(order);
String param = request.getParameter("bm");
if (!("").equals(param) && param != null)
{
where = "where bm='"+param+"'";

}
pi.setPageNO(pageNO);
pi.setWhere(where);
pi.setOrder(order);

ywlsxxFacade.addWhereClauseKey(ywlsxxForm,pi);
}

ywlsxxFacade.listAll(pi);
ywlsxxFacade.count(pi);

request.setAttribute("prtid", prtid);
request.setAttribute("pi", pi);
request.setAttribute( "form", ywlsxxForm );
if(qc==null){
qc = new QueryCondition();
}
qc.setForm(ywlsxxForm);
qc.setPi(pi);
session.setAttribute(QueryCondition.QUERY_SESSION,qc);
return actionMapping.findForward("list1");
} catch (Exception e) {
return (forwardErrorPage(request, actionMapping, ResourceReader.getMessageFromResource("error.wxjj.ywlsxx.search"),e));
}
}我用的是ssh框架,这是执行的action,第一次查询时从页面可以传过来bm值给param,在翻页时又调用这个方法,但bm已经没有值了,也就是说if (!("").equals(param) && param != null)不成立where = "where bm='"+param+"'";条件不能用了,所以就成了查询数据库表中所有数据的第二页了,大家看看改怎么办呢我要的结果是翻页还是按照有where条件的那个结果集翻到第二页

如果你的翻页是用表单提交的,即form.submit()可以把查询条件放到BEAN里面。那样就可以回传过来了。。
不过下一页大部分用的是location.ref跳转。所以要在URL后面加上查询条件。
不过这样挺麻烦的。。个人推荐还是在第一次检查的时候就把查询条件放到SESSION里面那样检索一次SESSION条件更改一次。点下一页条件就从SESSION里面拿。
这样的话。避免你改了BEAN里面的值,然后点下一页,检索结果就会变掉。这样你点下一页检索的结果还是上一次检索的结果
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-19
在查询的时候提交表单到action中
可以获得表单中的查询条件
将查询条件提取出来
放到map中传回页面
这样就可以在页面中取得查询条件了
第2个回答  2012-04-15
有关java的问题,这里都有很详细的讲解,你可以参考一下,方法有很多
参考资料:http://www.baidu.com/s?wd=%B1%B1%B7%E7%CD%F8&rsv_bp=0&rsv_spt=3&inputT=131
第3个回答  2012-04-15
有关java的问题,这里都有很详细的讲解,你可以参考一下,方法有很多
参考资料:http://www.baidu.com/s?wd=%B1%B1%B7%E7%CD%F8&rsv_bp=0&rsv_spt=3&inputT=131
相似回答