Доступ к bean-компоненту с точкой (.) В его идентификаторе

В определении потока я пытаюсь получить доступ к bean-компоненту, в идентификаторе которого есть точка.

(например: <evaluate expression = "bus.MyServiceFacade.someAction()" />

Однако это не работает. SWF вместо этого пытается найти bean-компонент "bus".

Изначально я преодолел это, используя вспомогательный bean-компонент для загрузки необходимого bean-компонента, но решение оказалось неэлегантным и неудобным. Использование псевдонимов также исключено, поскольку bean-компоненты являются частью большой системы, и я не могу вмешиваться в их работу.

Короче говоря, ни одно из решений не позволяло мне напрямую ссылаться на bean-компонент, используя его исходное имя. Возможно ли это в текущей версии SWF?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
9
0
2 775
4

Ответы 4

Это ограничение парсера EL (обычно либо OGNL, либо jboss-el для Spring Web Flow). EL использует точечную нотацию для анализа цепочки навигации, вызывая описанное вами начальное поведение (попытка найти bean-компонент "bus").

По моему опыту, все, что связано с методом получения, может быть доступно через точечную нотацию. В вашем примере любой объект, представленный компонентом bus, должен иметь метод getServiceFacade, а объект, возвращаемый getServiceFacade, должен иметь метод getSomeAction.

Пытаться:

['bus.MyServiceFacade']. someAction ()

или же

'bus.MyServiceFacade'.someAction ()

Это может сработать, а может и нет ... но аналогичные вещи используются в языке выражений для JSP.

Я смог сделать это, используя как символ средства доступа bean (@), так и заключив имя bean в одинарные кавычки.

Используя ваш пример: #{@'bus.MyServiceFacade'.someAction()}

Другие вопросы по теме