Struts2重定向时,OGNL异常(中文乱码)解决方法。

来源:互联网 发布:笑傲江湖武功排名知乎 编辑:程序博客网 时间:2024/06/06 07:41
先说说事情原委吧,有个页面要提交表单,成功后在返回此页面,发现,提交后返回此页面,点击F5刷新,又会重复提交表单。
于是,就去百了一下,发现解决方法3种。
1,js
2,提交成功后重新定向到一个页面
3,struts2 自带的token
本来一开始用第3种token,发现确实可以避免重复提交表单。但是前一次提交的数据,会重新自动赋值到页面,达不到我想清空页面的效果,然后就考虑第2种方法。

然后写struts2配置文件重定向,大概配置文件描述如下
            <result name="insSelf" type="redirectAction">
              <param name="actionName">doSelect</param>
              <param name="pageIndex">1</param>
              <param name="selPhotokindCode">${selPhotokindCode}</param>
              <param name="hotelphototbl.hotelSerno">${hotelphototbl.hotelSerno}</param>
              <param name="allName">${allName}</param>
            </result>
其中,allName会传中文参数。结果运行是又抛ognl异常,又是页面乱码。
继续百。
发现解决ognl异常,是因为上边的配置文件写的不正确,自定义的参数。这么写错误,改成如下
            <result name="insSelf" type="redirectAction">
              <param name="actionName">doSelect.action?pageIndex=1&amp;selPhotokindCode=${selPhotokindCode}& amp;hotelphototbl.hotelSerno=${hotelphototbl.hotelSerno}&amp;allName=${allName}</param>
            </result>

运行ognl不在抛异常了。中文继续乱码。

然后在重定向前的方法里,先URLEncoder,在重定向的方法里URLDecoder。
先方法里:
allName=URLEncoder.encode(allName, "UTF-8")
后方法里:
allName = URLDecoder.decode(allName, "UTF-8");

结果还是乱码,继续百,发现配置文件要改成如下
            <result name="insSelf" type="redirectAction">
              <param name="actionName">doSelect.action?pageIndex=1&amp;selPhotokindCode=${selPhotokindCode}&amp;hotelphototbl.hotelSerno=${hotelphototbl.hotelSerno}&amp;allName=${allName}</param>
              <param name="encode">true</param>
            </result>
多了一句<param name="encode">true</param>
运行ok,解决了~
0 0
原创粉丝点击