环境:strust2,hibernate3
现在分页已经实现好了,按条件查询也实现好了,但是就是两者结合起来有问题。
按照条件查询后,如果有多页,点击分页的链接,必须把查询条件也带到server端,现在没有找到很合适的传值方式。
尝试了使用URL传参,既把查询条件以"?paraName1=value1¶Name2=value2"的形式,但是这样子并不能完全实现。
一方面是使用get方式传值本身就不是很好,另外,如果参数有中文,对URL编码是个问题。
在这里请教一下,
1 除了使用表单或者URL的方式向服务端传递参数,还有没有别的方式?
2 如果使用URL以get方式传参,怎么解决中文参数编码问题?
[quote]
使用javascript倒是也可以,但是感觉挺乱的。
[/quote]
你可以写一个js文件,然后把它引用进来就好了 :D 不乱的。。。
第二个问题:用URL传值的时候可以去修改服务器(如tomcat)的uriencoding属性,设置跟你的页面编码相同就可以了
1.写一个JavaBean里面保存分页的信息。把这个Bean保存在request作用域中
2. URL转码使用java.net包下的 URLEncoder.encode(“字符”, "GBK");//编码URLDecoder.decode(“%1A%4B”, "UTF-8"); //解码
可以添加来传递你要的参数,如果要修改里面的值可以在js中修改,然后在js中提交表单。
[quote]这里分页链接只是个超链接,没有表单,所以没法提交。 [/quote]
不提交表单你怎么查询,你怎么知道前台请求的是第几页啊?你可以给加上ID属性,然后在js里面提交表单。
举例子:表单中有个链接,对吧。
[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]
1.大多数的做法是用URL传给后端,如果你不想用URL那就用AJAX吧。以前我们以项目是公司把那些信息封装在了JS中。如果可以你也可以考虑实现。你想想你点击的是一个标记,想不用URL传值那样处理起来确实很麻烦。不过搜索条件为中文的话老是传来传去确实很容易出现乱码。那么可以采取的解决办法就是加密。慢慢来总能找到解决方案的。其实提问很多情况下别人也只能给你思路。
2.开始我不知道你是要在前端处理。
[quote]超链接,直接可以把分页参数以?paraName1=value1¶Name2=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]
点击分页的连接的时候,把用于输入查询条件的form表单也一起提交,在server端可以同时获取查询条件和分页的信息,进行处理后,将数据返回客户端的同时也把之前的查询条件一起返回到客户端,这样查询条件就会保留下来。
你可以通过js将查询条件和分页信息动态的生成一个form,将这个form提交给server端