Spring Web Flow: как вызвать статический метод из ‹evaluate/›?

Мне нужно вызвать статический метод класса org.hibernate.Hibernate. Как это сделать в элементе потока?


person marioosh    schedule 23.11.2010    source источник
comment
Можно поподробнее?   -  person Mohamed Saligh    schedule 23.11.2010
comment
@Mohamed Saligh: Подробнее - у меня есть объект Product со списком изображений, которые лениво инициализируются. В потоке (при входе в какое-то представление) мне нужно инициализировать изображения, вызвав статический метод org.hibernate.Hibernate.initialize(). Как это сделать ?   -  person marioosh    schedule 23.11.2010


Ответы (2)


Вы можете использовать следующую конструкцию Spring EL для оценки статических методов:

<evaluate expression="T(org.hibernate.Hibernate).initialize(yourObject)"/>

См. соответствующую справочную часть Spring EL:

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/expressions.html#expressions-types

person Denis Kniazhev    schedule 25.11.2010

spring-webflow 2 использует выражения OGNL. OGNL допускает статические ссылки на поля и методы. Чтобы использовать его, вы хотели бы использовать нотации '@'.

Сначала вы ссылаетесь на класс (с пакетом). Вы хотели бы поставить @ перед именем пакета и класса и @ перед вызовом метода. С спящим режимом это будет выглядеть так

<evaluate expression="@org.hibernate.Hibernate@initialize()"/>
person John Vint    schedule 23.11.2010
comment
Это не работает. Я получаю ошибку синтаксического анализа: org.springframework.expression.spel.SpelParseException: EL1041E:(pos 24): после синтаксического анализа действительного выражения в выражении все еще есть данные: 'bean_ref(@)' - person marioosh; 24.11.2010