tangguo

struts2 2.3.20 ognl allowStaticMethodAccess

android

我将项目更新为Struts2 2.3.20版。现在,我的JSP中使用静态方法访问的所有情况都不起作用。

即。

<s:set var="linkEscaped"
 value="@org.apache.commons.lang.StringEscapeUtils@escapeHtml(#attr.myObject.link)" />

我已经在我的struts.properties中设置了->

struts.ognl.allowStaticMethodAccess=true

并在struts.xml->中尝试过

<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>

没有成功。有谁知道发生了什么变化,我需要怎么做才能再次启用它们?


阅读 395

收藏
2020-11-12

共1个答案

小编典典

更新资料

卢卡斯·莱纳特(Lukasz Lenart)评论:

需要明确的是,在2.3.20的上下文中,它是一个错误并已暂时修复,请参见issue.apache.org/jira/browse/WW-4429,但从2.5开始,将放弃对静态方法的访问。


允许静态方法访问从来都不是首选的处理方式,2.3.20即使将struts.ognl.allowStaticMethodAccess其设置为,也无法使用true。

从维基:

访问静态方法

如果您仍在表达式中使用静态方法(设置struts.ognl.allowStaticMethodAccess为true),请注意,由于内部安全机制将其视为java.lang.Class对已排除类的列表(请参见上文)的访问,因此它将不再起作用。临时解决方案是将以上内容复制到您的内容中,struts.xml并java.lang.Class从排除的类中删除。

从表达式访问静态方法的支持将很快被禁用,请考虑重构您的应用程序以避免进一步的问题!请检查WW-4348。

还有WW-4429

2020-11-12