9

再会!

我正在阅读 Manning 的 struts2 书,其中一个主题是使用 OGNL 使用语法访问静态变量 @[fullClassName]@[property or methodCall]

所以我在我的程序上试了一下,我的代码如下:

豆:

public class ContactsBean {

    private static int count = 1;
    //getter and setter
}

行动:

private ContactsBean contacts;
//getters and setters

JSP:

   <s:property value="@com.demo.bean.ContactsBean@count" />

or
    <s:property value="@vs@count" />  //valuestack method

但它不起作用。我错过了什么吗?谢谢你。

4

4 回答 4

14

@see OGNL 基础:访问静态属性

public class ContactsBean {
    private static int count = 1; 

    // static getter
    // setter
}

<s:property value="@com.demo.bean.ContactsBean@getCount()" />

其他情况

public class ContactsBean {
    public static final int SCALE = 50;
}

<s:property value="@com.demo.bean.ContactsBean@SCALE" />
于 2011-08-02T04:34:08.530 回答
3

Apache Struts 2 文档 - struts.properties http://struts.apache.org/2.0.14/docs/strutsproperties.html

要启用静态方法访问/调用,请在基础包的 struts.properties 文件中设置 Struts2 常量:

struts.ognl.allowStaticMethodAccess=true 

.. 或者我相信您可以在 struts.xml 中将其设置为

<constant name="struts.ognl.allowStaticMethodAccess" value="true"/> 
于 2011-08-04T01:37:23.030 回答
0

如果我们在 struts.xml 中提到以下条目,它的工作正常

  <constant name="struts.ognl.allowStaticMethodAccess" value="true"/> 
于 2012-02-04T18:02:22.837 回答
0

正如新版本的 struts 2 (2.3.20) 中所提到的,这个 ( struts.ognl.allowStaticMethodAccess) 将很快从 struts 中删除。

请查看Struts 2 重构代码以避免 OGNL 静态方法访问,以了解如何在新版本中仍然使用此功能。

于 2015-03-11T05:49:09.207 回答