9

フロー定義で、ID にドットが含まれる Bean にアクセスしようとしています

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

しかし、うまくいきません。SWF は、代わりに Bean の「バス」を見つけようとします。

最初は、ヘルパー Bean を使用して必要な Bean をロードすることで解決しましたが、この解決策は洗練されておらず、不快です。Bean は大規模なシステムの一部であり、改ざんできないため、エイリアスの使用も問題外です。

一言で言えば、元の名前を使用して Bean を直接参照できるソリューションはありませんでした。それは現在の SWF リリースでも可能ですか?

4

4 に答える 4

9

これは、Bean アクセサー ( @) 記号と、Bean の名前を一重引用符で囲むことで実現できました。

あなたの例を使用して:#{@'bus.MyServiceFacade'.someAction()}

于 2013-01-18T22:17:41.247 に答える
1

これは、EL パーサー (通常、Spring Web Flow の OGNL または jboss-el のいずれか) の制限です。ELは、ナビゲーションチェーンの解析にドット表記を使用し、説明した最初の動作を引き起こします(「バス」Beanを見つけようとします)。

于 2008-09-15T19:16:49.407 に答える
0

試す:

['bus.MyServiceFacade'].someAction()

また

'bus.MyServiceFacade'.someAction()

これはうまくいくかもしれませんし、うまくいかないかもしれません...しかし、JSP用の式言語でも同様のことが使われています。

于 2008-09-15T21:29:17.310 に答える
-1

私の経験では、getter メソッドを使用するものはすべてドット表記でアクセスできます。busあなたの例では、 Beanによって表されているオブジェクトにはgetServiceFacadeメソッドが必要であり、返されるオブジェクトにはメソッドgetServiceFacadeが必要getSomeActionです。

于 2008-09-15T19:22:21.140 に答える