日期:2014-05-17  浏览次数:20813 次

struts2中action之间跳转乱码问题。。。。
使用struts2开发,在其中一个action中的一个方法里使用response.sendRedirect("testAction?itemName"+itemName)的方法跳转到另外一个action后,获取itemName值的时候是乱码????
我尝试了很多方法还是没有解决!!!!new string()方法,URLDecoder方法等都使用了还是没用。。。。
求解答。。。。
struts action string 乱码

------解决方案--------------------
参数=URLEncoder.encode(参数, "ISO-8859-1")把参数重新编码一下再放到路径中传试一下
------解决方案--------------------
为什么非要那种方式response.sendRedirect..没有考虑过其他的方式实现?
------解决方案--------------------
不管你的工程是什么编码,只要是地址栏参数,都要转成"ISO-8859-1"编码,才会传输。
目测一楼的方法OK,先转码"ISO-8859-1"发送请求,接收到请求后,再从"ISO-8859-1"转成你需要的编码。最好避免地址栏传参,不安全,编码问题,长度限制。POST,cookie,很多其他思路的。唯独地址栏传参,一直最为诟病。
------解决方案--------------------
response.sendRedirect("testAction?itemName"+itemName)说好的=号呢?
改为response.sendRedirect("testAction?itemName="+itemName)
------解决方案--------------------
为什么要使用Response来跳转呢?
既然你是用Struts2来实现的那么就可以
换种方法试试:
你不是要跳转至其他的Action么,那就弄成和跳转到普通页面类似的去;
如:Action中Method的最后写 return "testAction";
然后在Struts.xml配置文件中配置
<result type="redirectAction" name="testAction">
  /x/y/z..需跳转的Action地址?Name=${Uname}
</result>
上面的Uname需要在Action中定义,并且给个get/set方法。

上面的这个方法我自己试过,可以传递中文!
------解决方案--------------------
    解决楼主的问题可以这样:使用重定向之前可以先使用setAttribute(String arg0, Object arg1)进行传参,在跳转后的页面用getAttribute(String key)取出来,看下行不行。如果楼主非要用自己想的那种方法的话,可以用一楼的方法,但要考虑参数的长度。----我也只是说说,没有动手试过,楼主决定要不要试下。
------解决方案--------------------
尝试修改一下 tomcat的编码