Доступ к статической переменной с использованием OGNL в Struts2 - PullRequest
8 голосов
/ 02 августа 2011

Добрый день!

Я читаю книгу Мэннинга 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 ]

13 голосов
/ 02 августа 2011

@ см. Основы 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" />
3 голосов
/ 04 августа 2011

Документация Apache Struts 2 - struts.properties http://struts.apache.org/2.0.14/docs/strutsproperties.html

Чтобы включить статический метод доступа / вызова, задайте постоянную Struts2 в файле struts.properties в базовом пакете:

struts.ognl.allowStaticMethodAccess=true 

.. или я считаю, что вы можете установить его в struts.xml как

<constant name="struts.ognl.allowStaticMethodAccess" value="true"/> 
0 голосов
/ 11 марта 2015

Как уже упоминалось в новой версии распорок 2 (2.3.20), эта (struts.ognl.allowStaticMethodAccess) будет вскоре удалена из распорок.

Пожалуйста, просмотрите Рефакторинг кода Struts 2, чтобы избежать доступа к статическому методу OGNL , чтобы узнать, как вы все еще можете использовать эту функцию в новой версии.

0 голосов
/ 04 февраля 2012

Хорошо работает, если мы упомянули следующую запись в struts.xml

  <constant name="struts.ognl.allowStaticMethodAccess" value="true"/> 
...