关于Struts 3.15.1 一个不确定bug

menxin 发布于 2013/07/26 14:38
阅读 582
收藏 2

Struts2低版本bug,闹的沸沸扬扬,不曾想到我们公司这边角旮旯的网站还受到Struts2漏洞的攻击,紧急部署3.15.1版本时发现一个问题。

公司使用了struts2的modelDriven机制,但是由于代码是一批一批的人写的,有些不规范的部分没有使用modelDriven接收参数。Struts2升级时更新了struts2-json-plugin-2.3.15.jar,发现使用modelDriven接收参数,在返回json时,json的结构与之前不一样,与2.2版本相比,少了一层。

研究了半天代码,发现modelDrivenIntercetor会调用getModel()方法,如果返回结果不为空,则将结果压入valueStack,而struts2设定返回json时,会从valueStack取得最后一个压入栈的值,用这个值作为rootObject,获取此rootObject下所有属性,转换为json格式,未使用modelDriven之前rootObject应该是action类,而使用了modelDriven之后rootDriven返回的值为getModel()的值,这点与Strust2 返回值不同,这应该一个bug吧?

加载中
0
J
JavaI
遇到同样问题,应该是个BUG
0
j
jackywww

今天遇到同样的问题呢!

目前在

<result type="json">
<param name="root">action</param>
<param name="includeProperties">
success,tip
</param>
</result>

加了一行红色字体行,临时解决了!

但总感觉不是很正规的办法,看来还是需要等官方的解决方案!

0
menxin
menxin

引用来自“jackywww”的答案

今天遇到同样的问题呢!

目前在

<result type="json">
<param name="root">action</param>
<param name="includeProperties">
success,tip
</param>
</result>

加了一行红色字体行,临时解决了!

但总感觉不是很正规的办法,看来还是需要等官方的解决方案!

这个方案我当时想过,没有包含的成员变量确实包含进去了,但是还是有问题,我的成员变量命名为outDto,原来的json显示为outDto:{id:123,....},升级之后,xml文件添加root之后,json显示为{id:123},前面的outDto不见了
0
d
daifeng130

引用来自“jackywww”的答案

今天遇到同样的问题呢!

目前在

<result type="json">
<param name="root">action</param>
<param name="includeProperties">
success,tip
</param>
</result>

加了一行红色字体行,临时解决了!

但总感觉不是很正规的办法,看来还是需要等官方的解决方案!

我遇到了同样的问题,用上面的方法解决了。
返回顶部
顶部