日期:2014-05-18  浏览次数:20641 次

关于奇怪的Struts2乱码问题
环境是这样的,前台后台,数据库都用的是utf-8格式,web.xml里也配置了spring的characterfilter进行了转码,现在一般情况都是正常的,只有在一种情况下乱码:从一个action重定向(redirect)到另一个action,在配置文件中用到了ognl表达式传递参数,如下 
<result type="redirect"> 
  listCountries.action?queryBean.name=${queryBean.name} 
</result> 
想将当前保存的查询字段一起传递到重定向的页面,此时在重定向到的页面出现乱码,tomcat里面的URIEncoding也配置了,不知道为什么还是这样,后来在action里面用 
queryBean.setName(URIUtil.encodeQuery(queryBean.getName()))才可以了,但是不可能每个地方都这样做啊,有什么其他办法吗,或者是有其他struts2参数进行设置? 
(初学struts,请帮忙)


------解决方案--------------------
这个貌似没有办法解决。
------解决方案--------------------
你可以试试用过滤类,就是当你访问站点下的所有文件的时候都转化一下,javax.servlet.Filter 实现这个接口,在web.xml里配置一下就行了.你试试,不知道可不可以.以前出现乱码我都是 这样做的
------解决方案--------------------
一般 tomcat里面的URIEncoding也配置成utf-8 传参就没什么大问题了,

request.setCharacterEncoding("utf-8"); //没看到你加这句,当然也可以写个fiter 让整个项目的action 先进这里面
<%@ page language="java" pageEncoding="utf-8"%> 页面要加这句

如果还不行,你还没解决 跟个帖,再告诉你个怪招