В определении потока я пытаюсь получить доступ к bean-компоненту, в идентификаторе которого есть точка.
(например: <evaluate expression = "bus.MyServiceFacade.someAction()" />
Однако это не работает. SWF вместо этого пытается найти bean-компонент "bus".
Изначально я преодолел это, используя вспомогательный bean-компонент для загрузки необходимого bean-компонента, но решение оказалось неэлегантным и неудобным. Использование псевдонимов также исключено, поскольку bean-компоненты являются частью большой системы, и я не могу вмешиваться в их работу.
Короче говоря, ни одно из решений не позволяло мне напрямую ссылаться на bean-компонент, используя его исходное имя. Возможно ли это в текущей версии SWF?




Это ограничение парсера 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()}