在做数据分页显示的时候按“下一页”的时候我希望把页面的几个参数(中文)传给下一个action,参数是表示用来查询数据库的几个条件。这是项目中用来显示数据的页面show_data.jsp的部分代码:<s:url id="url_pre" value="datatest.action">
<s:param name="pageDAO.currentPage" value="pageDAO.currentPage-1"></s:param>
<s:param name="pageDAO.xisuo" ><s:property value="pageDAO.xisuo"/></s:param>
<s:param name="pageDAO.tch_name"><s:property value="pageDAO.tch_name"/></s:param>
<s:param name="pageDAO.course"><s:property value="pageDAO.course"/></s:param>
</s:url> <s:url id="url_next" value="datatest.action" >
<s:param name="pageDAO.currentPage" value="pageDAO.currentPage+1"></s:param>
<s:param name="pageDAO.xisuo">${pageDAO.xisuo}</s:param>
<s:param name="pageDAO.tch_name">${pageDAO.tch_name}</s:param>
<s:param name="pageDAO.course" >${pageDAO.tch_name}</s:param>
</s:url> <s:if test="pageDAO.currentPage==1">第一页</s:if>
<s:else><s:a href="%{url_pre}">上一页</s:a></s:else><s:if test="pageDAO.currentPage==pageDAO.pageCount">已经最后一页 </s:if>
<s:else><s:a href="%{url_next}">下一页</s:a>
</s:else>action中有一个pageDAO对象,该对象有xisuo、tch_name、tch_name三个String类型的属性,目的就是要给这三个属性传递中文的值,通过url附加参数的方法。
在控制台输出获得的数据是:
??????
?????????
????????°???请问各位大虾有什么办法吗?

解决方案 »

  1.   

    你用的是哪一个版本呢?
    好像2.1.5-6都有乱码问题,好像是个bug,
    你用现在最新的版本已经修正过来了
    要是用最新的版本的话,你可以直接在struts.xml文件上定义上:
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
      

  2.   


    struts 是2.1.8版本的。你的方法我试过了,不管用。action中我加入这段代码:
    String   name=request.getParameter("pageDao.tea_name"); 
    if(name==null)
    System.out.println( "request的pageDao.tea_name为空"); 
    else
    {
    name=  new   String(name.getBytes( "ISO8859-1 "), "UTF-8 "); 
    System.out.println( "name= "+name); 
    }打印出来的是"request的pageDao.tea_name为空"这个。说明action都根本没有得到这个参数好象。
      

  3.   

    最简单的方法是
    中文字段发送前用java.net.URLEncoder.encode
    接收后用java.net.URLDecoder.decode
      

  4.   

    应该是发送前对中文参数encode一次。接受后把参数用decode的两次
      

  5.   

    建议:1、传参数不要用中文;2、程序统一用UTF-8,在IDE中设置 ;2、你可能用的是老版本,新版本自动做encode decode转换;
      

  6.   

    自己写过过滤器试试,不行的话给一下struts的字符格式<sonstant name="struts.i18n.encoding" value="utf-8"/>
      

  7.   

    <%@ page language="java"  pageEncoding="GBK"%>
    <meta http-equiv="Content-Type" content="text/html; charset=gbk" />编码方式都改成GBK试试、再不行的话,就在java里面转换过来、
      

  8.   

    最终用javascript来传递参数(post)的方法解决了。需要的看下面的链接。还是谢谢各位了,结帖。
    http://blog.sina.com.cn/s/blog_3fe961ae0100kxb1.html