日期:2014-05-19  浏览次数:20747 次

关于struts2中redirect传中文参数乱码问题
struts.xml部分代码
XML code

        <action name="terrace_*" class="terraceAction" method="{1}">

            <result name="success" type="redirect">terrace_query.action?groupId=${groupId}&amp;currentPage=${currentPage}&amp;keyword=${keyword}</result>

            <result name="list">jsp/TerraceList.jsp</result>

            <result name="add">jsp/TerraceAdd.jsp</result>

            <result name="update">jsp/TerraceEdit.jsp</result>
            <result name="detail">jsp/TerraceDetail.jsp</result>
            <interceptor-ref name="mystack" />

        </action>


其中keyword是查询关键字,当它是中文的时候就会出现乱码,试了老多方法都不行,求高手指点。补充说明:过滤器,页面及mysql数据库用的都是gbk编码,tomcat配置文件server.xml中设置了 URIEncoding="gbk"

------解决方案--------------------
当然不行了,先编码然后传递,传递过去解码 URL里有编码解码的静态类
------解决方案--------------------
想起他方法把,在页面定义一些参数,在action中得到。。
------解决方案--------------------
检查直接在当前action中做好了,返回success之前。
------解决方案--------------------
数据库连接字符串是否设置编码,建表语句是否设置,
还有就是你的提交是否是post提交
------解决方案--------------------
在你的tomcat/conf/server.xml 中 大概90 来行的位置 加上URIEncoding="gb2312" 试试

-->

<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector port="8686"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" 
disableUploadTimeout="true" URIEncoding="gb2312"/>
<!-- Note : To disable connection timeouts, set connectionTimeout value
to 0 -->