Struts 2, 2.3.20 提到
将禁用对从表达式访问静态方法的支持
很快,请考虑重构您的应用程序,以避免进一步
问题!
我们在验证器中使用了 OGNL 静态调用:
@ExpressionValidator(
expression = "@foo.bar@isValidAmount(amount)",
key = "validate.amount.is.not.valid"),
我们也在标签中使用了它
<s:set var="test"
value="@foo.bar@sampleMethod(#attr.sampleObject.property1)" />
那么,重构上述两种用法的最佳方法是什么?!
在您的代码中,您正在使用静态方法调用。最好的方法是在操作类中创建一个方法来包装静态方法并在 OGNL 中使用它。
public class Wrapper {
public boolean isValidAmount(amount){
return foo.barr.isValidAmount(amount);
}
public Object sampleMethod(Object property1){
return foo.barr.sampleMethod(Object property1);
}
}
一旦操作 bean 位于值堆栈中,您就可以使用
@ExpressionValidator(
expression = "isValidAmount(amount)",
key = "validate.amount.is.not.valid"),
或者在 JSP 中
<s:set var="test"
value="sampleMethod(#attr.sampleObject.property1)" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)