我将项目更新为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"/>
没有成功。有谁知道发生了什么变化,我需要怎么做才能再次启用它们?
更新资料
卢卡斯·莱纳特(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 。
问题内容: 我下载了pip并运行python setup.py install,一切正常。本教程的下一步是运行,pip install 但是甚至在尝试在线查找任何内容之前,我都会收到错误消息“ bash:pip:not found”。 这是在Mac OS X上,这也是我的新手,因此我假设有些路径设置在我运行setup.py时未正确设置。我该如何进一步调查?我需要检查什么才能更好地了解问题的确切原因
问题内容: 我正在尝试使用Python 3中的Paramiko将特定文件从远程服务器发送到我的本地计算机。 背景:目标计算机198.18.2.2上有一个目录,其中包含许多以名称开头的时间戳目录2020… 目标机器: 源机器: 到目前为止,我已经设法构造了要执行的命令,如下所示: 码: 呼叫: 问题总是给我最新的时间戳文件夹。但是,如果该文件夹中没有该文件,我想查看具有该文件的下一个最新时间戳文件夹
问题内容: 我想了解内置函数的工作原理。令我感到困惑的是,它还可以用作装饰器,但是仅当用作内置函数时才接受参数,而不能用作装饰器。 这个例子来自文档: 的论点是,,和文档字符串。 在下面的代码中用作装饰器。它的对象是x函数,但是在上面的代码中,参数中没有对象函数的位置。 在这种情况下,x.setter和x.deleter装饰器是如何创建的? 问题答案: 该函数返回一个特殊的描述符对象: 正是这种对
问题内容: 我想使用一个正则表达式来检查字符串是否仅包含大写和小写字母,数字和下划线。 问题答案: 要匹配仅包含这些字符的字符串(或空字符串),请尝试 这适用于.NET正则表达式,也可能适用于许多其他语言。 分解: 如果您不想允许使用空字符串,请使用+代替*。 正如其他人指出的那样,某些正则表达式语言具有的简写形式[a-zA-Z0-9_]。在.NET正则表达式语言中,您可以打开ECMAScript
问题内容: 我用C语言编写了一个简单的函数,可以将给定的数字提高到给定的幂。当我在C中调用该函数时,该函数将返回正确的值,但是当我在Python中调用该函数时,它将返回一个不同的,不正确的值。 我使用以下命令创建了共享文件: 我尝试了C函数的不同配置,其中一些返回期望值,而有些则没有。例如,当我的函数使用而不是for循环的简单正方形时,它在Python中返回了正确的值。 我希望最终能够在pytho
问题内容: 我已经使用PuTTYgen生成了密钥对,并使用Pageant进行了登录,因此在系统启动时,我只需输入一次密码。 如何在Linux中实现呢?我听说过,但听说它使用了不同的密钥对格式-我不想更改Windows密钥,如果我可以在Windows和Linux中以相同的方式无缝连接,那就太好了。 问题答案: puttygen支持将您的私钥导出为OpenSSH兼容格式。然后,您可以使用OpenSSH