因为一些必须的原因,需要将struts从2.0.8升级到2.1.8,悲剧由此发生。
这里记录了一些升级过程中问题的解决思路,还有些则是待解决的问题。希望有经验的同学建议建议。
1 redirect写法不被支持。
解决:去掉下划线变驼峰之后问题成功解决
2 出现html的unicode码问题。struts2.1.8默认使用property标签时会使用unicode进行输出,据说是为了安全,国际化等,但是我等小项目,不需要与这些大概念沾边的,能用就行三,而这次的升级,确实是一个痛苦的过程。
注:对于普通的页面,浏览器会将其转换成对应汉字,但是如果是使用ajax,则不会进行转换(当然也可以手动转换,但是修改地方特别多)
解决:网上传闻在标签中加上escape属性即可。但是我大致看了一下,使用标签的地方很多(是很多),要找出ajax的用法也不是容易的事情。
于是开始寻找批量解决的方式,找到struts的tld文件,再对应找到源码中的PropertyTag类,发现其默认设置为true,将其改成false后问题解决。
3 纠结的来了,至今未能找到好的解决方法
起因:
项目需要国际化支持,并且action中存放的actionMessage是动态的,写法如下:
List<String> a ...
if (条件1){
a.add("login.error");
} else if(条件2){
a.add('login.locked');
}...
setActionMessage(a);
在界面中以前的写法大致如下:
<div id = 'msg'><s:property value="getText('${actionMessage}')" /></div>
消息通过EL表达式提取出来,然后放入标签中执行,得到配置文件中的值。
但是因为安全的考虑,2.1之后的版本取消了这样的用法,再这样写的话会报错的。
初步跟踪了一下代码,发现最后跑到xwork里去了,而我确实对struts这块不熟,有对这块有经验的请赐教。如果解决,我会将方案记录下来。
最后抱怨几句,发现struts升级没考虑到向下兼容啊。升级太痛苦了。
还有就是struts2.08有时候会有请求阻塞的情况,不知道大家遇到过没有?就是请求提交到后台之后进不了action,此情况不稳定复现。
分享到:
相关推荐
struts2.18 all zip
Struts2升级到2.5.30,问题解决及过程记录, 文章详见:https://blog.csdn.net/sinat_36743893/article/details/124582101
struts2.18框架的源码 struts2.18框架的源码
struts2.3.24升级2.5.26一些jar包和注意事项
struts 2.18 jar包里面包含Myeclipse开发所需要的7个jar
北京时间8月22日13时,Apache官方发布通告公布了Struts2中一个远程代码执行漏洞(cve-2018-11776)。该漏洞可能在两种情况下被触发,第一,当没有为底层xml配置中定义的结果设置namespace 值,并且其上层动作集配置...
struts2.3.16升级到struts2.5.13的教程,里面包含了使用到的jar包,都是亲测使用的,把过程记录下来,方便其他人使用。
struts2.0升级到struts2.1的工具,自动修改配置文件和页面
Apache官方已针对该漏洞发布安全公告,ApacheStruts 2.3.5 – 2.3.31版本及2.5 – 2.5.10版本存在远程代码执行漏洞(CNNVD-201703-152 ,CVE-2017-5638)。该漏洞是由于上传功能的异常处理函数没有正确处理用户输入...
学习struts2.18 很完整的例子 含文件上传 及DWR 等 DEMO含JAR包
struts 高危漏洞升级为struts-2.3.35所需要的所有jar包
整合struts2.18+spring3.0.2+hibernate3.5.1,全部都是目前最新版本。手动添加的jar包,没有任何冗余。数据库是mysql5.0,有一张表“Test”,里面有两个字段“testid”、“testvalue”。
struts版本升级至2.3.20,及新版本修复日志,升级注意事项
Struts2.3.15.1版本升级到2.3.32版本详细流程,可解决Struts 2远程执行代码漏洞
struts2 升级 2.3.15.1 struts2-jasperreports-plugin-2.3.15.1.jar
此记录struts2.5.16在升级过程中基本遇到所有的问题,包括jar的引进,以及配置文件的写法。
struts2升级到Struts 2.3.32相关jar包
struts升级2.3的变化很大,需要修改的地方很多,特此记录struts升级2.3步骤
该文档是struts2从2.3.26升级到2.3.34的方法,包括文档和相关的jar
针对Struts2.2.3升级到Struts2.3.34版本,修复漏洞所必须要的jar包。里面的jar包最好是全部替换,程序上不需要修改代码,只需替换所对应的jar即可。