【问题标题】:struts2 static method invoke issuestruts2静态方法调用问题
【发布时间】: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 可以工作所有版本。
  • 你知道吗..我放弃了!我只是硬编码的东西!太麻烦了。。谢谢
  • 完全没有问题,因为它开箱即用。没有版本信息,证明您使用的是正确的包/密钥,没有人可以做很多事情。你也可以只通过动作暴露价值——硬编码是错误的解决方案。

标签: java struts2


【解决方案1】:

您检查了吗,您的struts.properties 中的struts.ognl.allowStaticMethodAccess 属性设置为true

【讨论】:

  • 是的,没错。它仍然不起作用。我已经放弃并对其进行了硬编码。
【解决方案2】:

为我工作,但请注意,现在不可能了: read official Struts documentation

【讨论】:

  • 在 StackOverflow 上不鼓励仅链接的答案。
  • 如果“不可能”,那你为什么要给出这个答案?
猜你喜欢
  • 2015-06-23
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
相关资源
最近更新 更多