Struts2升级带来的乱码问题解决方案

最近在做一个项目时,遇到一个问题,项目中使用的struts2.1.6.jar,使用过程中不存在乱码的问题,但是,项目经理要求,此版本的struts存在安全问题,而且struts官网也强烈建议开发者将struts升级到官网最新版本。本以为把相关的jar包替换掉后就大功告成了,但问题出来了,页面展示中的汉字全部都显示为"&XXX"的形式,如果是英文或数字就不存在这样的情况,这样的问题的原因是在页面中使用了property标签来显示相应的值,那么只要配置escape=false即可解决这样的问题,代码为: <property value="user.username" eascape="false"></property> 如果不配置,则escape的默认值是true 到这里,大家可能认为问题就这样解决了,但是整个工程有七百多个页面,使用了property标签的而没有配置escape的占了95%以上,虽然IDE的全局查找功能可以帮我们打到所有需要修改的地方,但是修改所花费的时间还是太长了,于是有了修改struts标签中escape默认值的想法,查阅struts的源代码,发现在PropertyTag这个类中存在一个escapeHtml的属性它的默认值是true,继续查看源码,终于定位了修改的地方,我们只要将这个escapeHtml的值修改为false即可。 找到下载的源代码,找到PropertyTag.java文件,修改之,保存,然后我们将其重新打包成jar文件(struts2采用maven进行管理,需要在本机上安装maven,然后使用mvn命令即可),将生成的struts-core的jar文件替换掉工程中使用的,测试,问题解决,对于极个别的需要使用eascape=true的情况,我们只需要修改这几个而已。 此问题有原因是当escape=true时会对进行htmlEncode所导致的,但是我们并不需要对其进行encode,这种解决方案所花费的时间只是最开始解决方案的1/5
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值