我将项目更新为 Struts2 版本 2.3.20 。现在,我的 JSP 中使用静态方法访问的所有情况都不起作用。
ie.
<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"/>
没有成功。有谁知道发生了什么变化以及我需要做什么才能再次启用它们?
Update
卢卡斯·莱纳特评论道:
需要明确的是,在 2.3.20 的上下文中,这是一个错误并已暂时修复,请参阅 issues.apache.org/jira/browse/WW-4429,但从 2.5 开始,对静态方法的访问将被删除。
---
允许静态方法访问从来都不是首选的处理方式,并且在2.3.20
即使这样也行不通struts.ognl.allowStaticMethodAccess
被设定为true
.
来自wiki https://cwiki.apache.org/confluence/display/WW/Security#Security-Accessingstaticmethods:
访问静态方法
如果您仍然在表达式中使用静态方法(设置struts.ognl.allowStaticMethodAccess
to true
)请注意,这将不再起作用,因为内部安全机制认为这是对java.lang.Class
它位于排除的类列表中(见上文)。临时解决方案是将以上内容复制到您的struts.xml
并删除java.lang.Class
来自被排除的类别。
对从表达式访问静态方法的支持即将被禁用,请考虑重构您的应用程序以避免进一步的问题!请检查WW-4348 https://issues.apache.org/jira/browse/WW-4348.
Also WW-4429 https://issues.apache.org/jira/browse/WW-4429.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)