【发布时间】:2011-12-01 16:32:27
【问题描述】:
在 struts2 中,我知道我们可以通过 OGNL 调用静态方法。从下午开始,我一直在尝试调用此静态方法,但似乎无法找出问题所在。
struts.xml 配置:
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
jsp页面:
.....<s:property value='@com.aesthete.csmart.web.server.fw.common.config.Properties@getDefaultProperty("maxdemocountwords")'/>....
Properties.java
public static String getDefaultProperty(String key){
return defaultProps.getProperty(key);
}
我有什么遗漏吗?
【问题讨论】:
-
实际发生了什么?看起来不错,除了非常深的包。
-
jsp页面上没有出现该值。如果我在操作中声明 getDefaultProperty() 并从该方法中调用 Properties.getDefaultProperty() ,那么它就可以工作。虽然不是直接通过静态方法调用..
-
不知道该告诉你什么,除了确保完全限定的名称是正确的,并且你传递的属性键是正确的——语法和常量是正确的,AFAIK 可以工作所有版本。
-
你知道吗..我放弃了!我只是硬编码的东西!太麻烦了。。谢谢
-
完全没有问题,因为它开箱即用。没有版本信息,证明您使用的是正确的包/密钥,没有人可以做很多事情。你也可以只通过动作暴露价值——硬编码是错误的解决方案。