环境是这样的,前台后台,数据库都用的是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,请帮忙)

解决方案 »

  1.   

    你可以试试用过滤类,就是当你访问站点下的所有文件的时候都转化一下,javax.servlet.Filter 实现这个接口,在web.xml里配置一下就行了.你试试,不知道可不可以.以前出现乱码我都是 这样做的
      

  2.   

    一般 tomcat里面的URIEncoding也配置成utf-8  传参就没什么大问题了,request.setCharacterEncoding("utf-8"); //没看到你加这句,当然也可以写个fiter 让整个项目的action 先进这里面
    <%@ page language="java" pageEncoding="utf-8"%>   页面要加这句如果还不行,你还没解决 跟个帖,再告诉你个怪招
      

  3.   

    你们说的这些我都实现了,上面也说过了tomcat里面的URIEncoding设置过了(utf-8),filter也使用了,用的是spring的filter,现在真的没辙了
      

  4.   

    因为你是在配置文件里出现乱码问题。而struts2对配置文件编码貌似不支持双字节,所以你这个问题貌似无法解决。