struts2 升级问题

struts2 升级问题

 

最近为了安全问题,将一系统的struts2.2.1升级到最新版本struts2.3.24。

 

主要方法是 先下载 struts-2.3.24.1-lib 包,再和项目的lib进行比较,找两者共同拥有的同名jar包,每个同名jar包只保留拥有最新版本号的那个。

 

接下就是修改相关xml文件的文件头,如将struts.xml的文件头修改为

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
"http://struts.apache.org/dtds/struts-2.3.dtd">

之后启动应用,出现不少错误,但有些出错在网上可以很找到相关的解决方法,但有一个出错费了我很多的时间,在网上也没有搜索到解决方法,还好最后解决了,所以就记录下来。

 

报错信息:

Unexpected Exception caught setting 'xxx' on 'class com.opensymphony.xwork2.ActionSupport: Error setting expression 'xxx' with value ['xxx', ]

根据这个错误信息 Unexpected Exception caught setting 'xxx'  ,我查看了相关的java文件里的 'xxx' 参数是否有对应的set方法,但是java文件里有对应的set方法。这下我只能求助google了,网上也有出现这种错误,但解决方法不能处理我的问题。

 

最诡异的是最个:

Unexpected Exception caught setting '_' on 'class com.opensymphony.xwork2.ActionSupport: Error setting expression '_' with value ['1457409527229', ]

 

这个诡异就在于出现了 ‘_’ 这个参数名,查看了源文件,请求链接中是没有包含这样的参数名的,请求链接类似 

https://localhost/person!getInfo?personId=xx&_=1457409527229

就是后面这一 &_=1457409527229 串无中生有才让我感到奇怪。(后来才知道是使用了 jquery ajax 无缓存会自动添加后面这一窜。但这不是造成错误的原因,我把时间浪费在设置拦截器上,对参数进行过滤,结果也没用。)

 

在网上找不到答案后,重新看了一下所有发生错误的请求链接,结果发现几个发生错误的链接都类似

https://localhost/person!getInfo? 这样(用!调用方法)

果然是这个问题所造成的,终于找到原因所在。

我在 struts.xml 文件上加上

  1. <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
这一句,应用正常运行没有出现类似

Unexpected Exception caught setting 'xxx' on 'class com.opensymphony.xwork2.ActionSupport: Error setting expression 'xxx' with value ['xxx', ] 

这样的错误。(但升级之前是没有这一句的,而且项目是能正常运行的。)

 

但依然出现

Unexpected Exception caught setting '_' on 'class com.opensymphony.xwork2.ActionSupport: Error setting expression '_' with value ['1457409527229', ] 

这样的错误,但这个无关紧要,不影响系统正常运行,如果你不想看到它,可以把struts2的开发模式关闭。 

 

 

http://sukaye.iteye.com/blog/2283272

 

猜你喜欢

转载自ska.iteye.com/blog/2283272