近期在开发SSH项目时,遇到一个问题,困扰了好久,望各位高手不吝赐教,小弟在此谢过!! 
    
问题描述: 
      在一个页面中模糊查询数据时,能得到结果,且分页也正确,但当点击下一页时,则数据丢失; 
   
     原因:当第一次查询时,点击查询按钮,通过form中action提交。模糊查询的参数保存到了struts2的值栈中,所有得到正确显示;但当点击下一页时,模糊查询的参数,必须带上,这是这些参数通过地址栏提交到action。但此时参数的中文,传过去后变成乱码,查询时导致没有匹配的结果,即数据丢失。

解决方案 »

  1.   

    一、可以把这些条件保存在session中 在action中获取 这样可以避免url传参导致乱码二、本质的解决方法就是中文乱码的解决
    把tomcat的转码方式改为utf8 设个过滤器 页面数据库统一utf8
      

  2.   

    下一页也可以post提交的么.和你原来的一样阿.还有就是spring有中文转换的配置阿.在xml里面配置下encode好了.
      

  3.   

    中文乱码你 可以修改tomcat的配置文件
    server.xml
        <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" URIEncoding="UTF-8"/>
        <!-- A "Connector" using the shared thread pool-->
    这样就可以了,不会在URL中文件参数乱码.
      

  4.   

    你这个问题只需要必修tomcat的URL编码,不需要其它的操作.
      

  5.   

    你可以用POST提交,条件搜索那里做成表单的那种,不用URL传参,
    这样就没有乱码了,我以前就是这样做的~
      

  6.   

     lz也可以在action中获取中文参数的时候进行一次编码:
    如:String param = new String(param.getBytes("ISO-8859-1"),"UTF-8");
      

  7.   


    点击下一页 不是一个链接吗?怎么“用POST提交,条件搜索那里做成表单”呢?
      

  8.   

    链接也能用post请求啊,设置一个onclik事件.把请求方式改成post就行了阿
      

  9.   

    我也遇到过这个问题,做了两项修改,解决了:
    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);
      

  10.   

    问一下楼主,你的跳转下一页按钮,是提交按钮,还是一个超链接?当前页码你是怎么传过去?我用的是一个超链接href="userAction!select?createPage='+createPage+'.........";这么做有很多麻烦之处。如果用提交按钮,那当前页参数要怎么传过去呢?想与楼主交流一下,谢谢~
      

  11.   

    form表单的post提交啊
    还可以使用转码  先转成iso-8859-1在转成UTF-8既可以了
    去google查下
      

  12.   

    提交之前先转换一下字符编符格式
    例如:var x = encodeURI(x);
      

  13.   

    第一页,上一页,下一页,最后一页 这些都写成 js 函数,点击链接时执行相应的函数,form 通过 post 的方式提交,page 当前也,limit 每页大小 这样的请求参数可以放在 form.action=url?page=2&limit=20
      

  14.   


    如果用链接的话,如果碰到中文的话,一般都是要进行处理,POST的话,基本不用对中文过多的出来,你直接在相应的地方进行接收就可以了,唯一不好的就是刷新页面的时候会有一个提示~
      

  15.   

    <input type="hidden" name="parameter" value="${parameter}" />
    这样不就保存了么?
      

  16.   

    我做过这样的搜索查询
    我是如下处理的
    第一次用户输入的关键字到服务器上时
    我用String keyCode = URLEncoding(keyWord,"UTF-8")吧关键字保存起来翻页的URL上的param=keyCode然后应该就没啥问题了如果不行的话,就encoding几次,在翻页的时候decode就OK了