近期在开发SSH项目时,遇到一个问题,困扰了好久,望各位高手不吝赐教,小弟在此谢过!!
问题描述:
在一个页面中模糊查询数据时,能得到结果,且分页也正确,但当点击下一页时,则数据丢失;
原因:当第一次查询时,点击查询按钮,通过form中action提交。模糊查询的参数保存到了struts2的值栈中,所有得到正确显示;但当点击下一页时,模糊查询的参数,必须带上,这是这些参数通过地址栏提交到action。但此时参数的中文,传过去后变成乱码,查询时导致没有匹配的结果,即数据丢失。
问题描述:
在一个页面中模糊查询数据时,能得到结果,且分页也正确,但当点击下一页时,则数据丢失;
原因:当第一次查询时,点击查询按钮,通过form中action提交。模糊查询的参数保存到了struts2的值栈中,所有得到正确显示;但当点击下一页时,模糊查询的参数,必须带上,这是这些参数通过地址栏提交到action。但此时参数的中文,传过去后变成乱码,查询时导致没有匹配的结果,即数据丢失。
把tomcat的转码方式改为utf8 设个过滤器 页面数据库统一utf8
server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
<!-- A "Connector" using the shared thread pool-->
这样就可以了,不会在URL中文件参数乱码.
这样就没有乱码了,我以前就是这样做的~
如:String param = new String(param.getBytes("ISO-8859-1"),"UTF-8");
点击下一页 不是一个链接吗?怎么“用POST提交,条件搜索那里做成表单”呢?
1.配置struts.xml添加:
<constant name="struts.i18n.encoding" value="UTF-8" />
2.做了一个过滤器。
doFilter方法中写:
arg0.setCharacterEncoding("UTF-8");
arg1.setContentType("text/html;charset=UTF-8");
arg2.doFilter(arg0, arg1);
还可以使用转码 先转成iso-8859-1在转成UTF-8既可以了
去google查下
例如:var x = encodeURI(x);
如果用链接的话,如果碰到中文的话,一般都是要进行处理,POST的话,基本不用对中文过多的出来,你直接在相应的地方进行接收就可以了,唯一不好的就是刷新页面的时候会有一个提示~
这样不就保存了么?
我是如下处理的
第一次用户输入的关键字到服务器上时
我用String keyCode = URLEncoding(keyWord,"UTF-8")吧关键字保存起来翻页的URL上的param=keyCode然后应该就没啥问题了如果不行的话,就encoding几次,在翻页的时候decode就OK了