quqtalk
quqtalk
2011-05-27 13:14
浏览 210
已采纳

JSP分页怎么传递查询条件

环境:strust2,hibernate3
现在分页已经实现好了,按条件查询也实现好了,但是就是两者结合起来有问题。
按照条件查询后,如果有多页,点击分页的链接,必须把查询条件也带到server端,现在没有找到很合适的传值方式。
尝试了使用URL传参,既把查询条件以"?paraName1=value1&paraName2=value2"的形式,但是这样子并不能完全实现。
一方面是使用get方式传值本身就不是很好,另外,如果参数有中文,对URL编码是个问题。
在这里请教一下,
1 除了使用表单或者URL的方式向服务端传递参数,还有没有别的方式?
2 如果使用URL以get方式传参,怎么解决中文参数编码问题?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • qianzhi008
    qianzhi008 2011-05-27 17:00
    已采纳

    [quote]
    使用javascript倒是也可以,但是感觉挺乱的。
    [/quote]
    你可以写一个js文件,然后把它引用进来就好了 :D 不乱的。。。

    点赞 评论
  • xiaowen0713
    xiaowen0713 2011-05-27 13:28

    第二个问题:用URL传值的时候可以去修改服务器(如tomcat)的uriencoding属性,设置跟你的页面编码相同就可以了

    点赞 评论
  • slightwei
    slightwei 2011-05-27 13:30

    1.写一个JavaBean里面保存分页的信息。把这个Bean保存在request作用域中
    2. URL转码使用java.net包下的 URLEncoder.encode(“字符”, "GBK");//编码URLDecoder.decode(“%1A%4B”, "UTF-8"); //解码

    点赞 评论
  • qianzhi008
    qianzhi008 2011-05-27 13:32

    可以添加来传递你要的参数,如果要修改里面的值可以在js中修改,然后在js中提交表单。

    点赞 评论
  • qianzhi008
    qianzhi008 2011-05-27 14:48

    [quote]这里分页链接只是个超链接,没有表单,所以没法提交。 [/quote]
    不提交表单你怎么查询,你怎么知道前台请求的是第几页啊?你可以给加上ID属性,然后在js里面提交表单。

    点赞 评论
  • qianzhi008
    qianzhi008 2011-05-27 14:52

    举例子:表单中有个链接,对吧。
    [code="java"]« prev[/code]
    js这样写来提交表单就可以了。其实是要提交表单的啊,它默认的提交表单方式是get方法。
    [code="java"]
    function prevPage(){
    var frm = document.getElementById("public");
    frm.action="queryAction!prevQuery.action";
    frm.method="post";
    frm.submit();
    }
    [/code]

    点赞 评论
  • slightwei
    slightwei 2011-05-27 14:56

    1.大多数的做法是用URL传给后端,如果你不想用URL那就用AJAX吧。以前我们以项目是公司把那些信息封装在了JS中。如果可以你也可以考虑实现。你想想你点击的是一个标记,想不用URL传值那样处理起来确实很麻烦。不过搜索条件为中文的话老是传来传去确实很容易出现乱码。那么可以采取的解决办法就是加密。慢慢来总能找到解决方案的。其实提问很多情况下别人也只能给你思路。

    2.开始我不知道你是要在前端处理。

    点赞 评论
  • qianzhi008
    qianzhi008 2011-05-27 15:01

    [quote]超链接,直接可以把分页参数以?paraName1=value1&paraName2=value2的形式传给服务端的action,所以这里没有表单,如果像你说的那样增加一个隐藏的表单,这个表单怎么提交是个问题,还请赐教啊。[/quote]
    [quote]
    举例子:表单中有个链接,对吧。
    Java代码 收藏代码

    <a id="prev" class="Prev" href="#" onclick="prevPage()">« prev</a>  
    

    js这样写来提交表单就可以了。其实是要提交表单的啊,它默认的提交表单方式是get方法。
    Java代码 收藏代码

    function prevPage(){  
            var frm = document.getElementById("public");  
            frm.action="queryAction!prevQuery.action";  
            frm.method="post";  
            frm.submit();  
        }  
    

    [/quote]

    点赞 评论
  • iteye_1340
    iteye_1340 2011-05-27 19:17

    点击分页的连接的时候,把用于输入查询条件的form表单也一起提交,在server端可以同时获取查询条件和分页的信息,进行处理后,将数据返回客户端的同时也把之前的查询条件一起返回到客户端,这样查询条件就会保留下来。

    你可以通过js将查询条件和分页信息动态的生成一个form,将这个form提交给server端

    点赞 评论

相关推荐