呵呵,我用的方案就是你的方法,不过对NULL进行转换,赋值给隐藏域,的确太麻烦,也想找一个好的方法,关注.....

解决方案 »

  1.   

    <=(request.getParameter("query")==null ||request.getParameter("query").equals("")?"1=1":request.getParameter("query")) >
      

  2.   

    多写上面两位,今天问了一个前辈,解决了这个问题,利用session来实现保存用户的查询信息始终存在。
      

  3.   

    当然,Session的生命周期是客户端从开始访问到关闭客户端网页,这段时间内,Session存放的引用是不会被回收的
      

  4.   

    下面是我在JSP里面的方法,不知道对你有没有帮助
    在页面表单内你应该有一个查询的输入框吧?
    假设这个输入框name=chooseName
    在页面开始输入:String chooseName = request.getParameter("chooseName");
          if(chooseName==null)chooseName="";
    再写一个script,假设当前页面叫 noncepage.jsp
    function sbmt_choose(form){
      form.action="noncepage.jsp";
      form.submit();
    }在提交表单的时候调用这个SCRIPT
    SQL语句类似:select * from tableName where name like'%"+chooseName+"%'
    我在JSP里面就是这样的..STRUTS就不知道了.
      

  5.   

    我的用法是通过request得到后面的参数然后直接把参数加到url上返回分页页面,下次提交的时候参数自然就存在了,不用隐藏域
    /**
     * 取得查询参数
     * @param request
     * @return
     */
    public String urlPath(HttpServletRequest request) {
       String path = "";
       String pagepath = "pageIndex=";
       String url = request.getQueryString();    //如果无参数
       if (url == null || url.equals("")) {
        return pagepath;
       }    List lista = new ArrayList();
       StringTokenizer ss = new StringTokenizer(url, "&");    while (ss.hasMoreTokens()) {
        String s = ss.nextToken();
        //如果该字符串不存在则将s添加到list中
        if (s.indexOf("pageIndex") == -1)
         lista.add(s);
       }    for (int i = 0; i < lista.size(); i++) {
        String param = "";
        try {
         param = new String(lista.get(i).toString().getBytes(
           "iso-8859-1"), "gb2312");
        } catch (UnsupportedEncodingException e) {      e.printStackTrace();
        }
        path += param + "&";
       }    return path + pagepath; }