https://stackoverflow.com/a/27505604/1654265

发布于 2021-01-30 16:37:34

我将项目更新为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"/>

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

关注者
0
被浏览
358
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    更新资料

    卢卡斯·莱纳特(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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看