2008-09-15 8 views
7

En una definición de flujo, estoy tratando de acceder a un bean que tiene un punto en su IDAcceso a un frijol con un punto en su ID de

(ejemplo (.): <evaluate expression="bus.MyServiceFacade.someAction()" />

Sin embargo, lo hace no funciona. SWF intenta encontrar un "bus" de frijoles en su lugar.

Inicialmente, lo superé usando un bean auxiliar para cargar el bean requerido, pero la solución es poco elegante e incómoda. El uso de alias es también fuera de la cuestión ya que los granos son parte de un sistema grande y no puedo alterarlos.

En pocas palabras, ninguna de las soluciones me permitió referir el bean directamente usando su nombre original. ¿Es eso posible en la versión actual de SWF?

+0

¿Encontró una solución? – lud0h

Respuesta

1

Esta es una restricción del analizador EL (generalmente OGNL o jboss-el para Spring Web Flow). EL usa notación de puntos para analizar la cadena de navegación, lo que provoca el comportamiento inicial que describes (intentando encontrar el bean "bus").

-1

En mi experiencia, todo lo que tenga un método getter se puede acceder mediante notación de puntos. En su ejemplo, cualquier objeto que esté siendo representado por el bean bus necesita tener un método getServiceFacade y que el objeto devuelto por getServiceFacade debería tener un método getSomeAction.

0

Probar:

algunaAccion [ 'bus.MyServiceFacade']()

o

'bus.MyServiceFacade'.someAction()

Esto puede funcionar, o puede. no ... pero se usan cosas similares en el Lenguaje de Expresión para JSP.

+0

Intenté ambas sugerencias, pero fue en vano – Arnelism

7

Pude hacer esto utilizando tanto el símbolo de acceso de bean (@) como comillas simples alrededor del nombre del bean.

Utilizando su ejemplo: #{@'bus.MyServiceFacade'.someAction()}

Cuestiones relacionadas