2008-09-15 7 views
7

In einer Ablaufdefinition ich eine Bean zuzugreifen versuchen, das einen Punkt in seiner ID hateine Bohne mit einem Punkt Zugriff in seiner ID

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

aber es tut SWF versucht stattdessen, einen Bean "Bus" zu finden.

Anfangs habe ich es überstanden, indem ich eine Hilfs-Bean verwendet habe, um die benötigte Bean zu laden, aber die Lösung ist unelegant und unbequem auch nicht in Frage, da die Bohnen Teil eines großen Systems sind und ich sie nicht manipulieren kann

Kurz gesagt, keine der Lösungen erlaubte mir, die Bean direkt zu referenzieren, indem ich ihren ursprünglichen Namen benutzte. Ist das in der aktuellen SWF-Version überhaupt möglich?

+0

Haben Sie eine Lösung gefunden? – lud0h

Antwort

1

Dies ist eine Einschränkung des EL Parsers (im Allgemeinen entweder OGNL oder jboss-el für Spring Web Flow). EL verwendet Punktnotation zum Analysieren der Navigationskette, was das von Ihnen beschriebene Anfangsverhalten verursacht (der Versuch, die "Bus" -Bohne zu finden).

-1

Nach meiner Erfahrung kann alles mit einer Getter-Methode über Punktnotation zugegriffen werden. In Ihrem Beispiel muss jedes Objekt, das durch die Bean bus dargestellt wird, über eine getServiceFacade-Methode verfügen und das von getServiceFacade zurückgegebene Objekt muss über eine getSomeAction-Methode verfügen.

0

Versuchen:.

[ 'bus.MyServiceFacade'] someAction()

oder

‚bus.MyServiceFacade'.someAction()

Diese arbeiten kann, oder es kann nicht ... aber ähnliche Dinge werden in der Ausdruckssprache für JSPs verwendet.

+0

Ich habe beide Vorschläge ausprobiert, aber ohne Erfolg – Arnelism

7

Ich konnte dies tun, indem Sie sowohl das Bean-Accessor-Symbol (@) als auch einfache Anführungszeichen um den Namen der Bean verwendeten.

mit Ihrem Beispiel: #{@'bus.MyServiceFacade'.someAction()}