Доступ к компоненту с точкой (.) В его идентификаторе - PullRequest
8 голосов
/ 15 сентября 2008

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

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

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

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

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

Ответы [ 4 ]

8 голосов
/ 19 января 2013

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

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

1 голос
/ 15 сентября 2008

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

0 голосов
/ 16 сентября 2008

Попробуйте:

[ 'bus.MyServiceFacade']. SomeAction ()

или

bus.MyServiceFacade'.someAction ()

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

0 голосов
/ 15 сентября 2008

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

...