1

次のように変数をSpring Beanに渡そうとしています:

<component doc:name="Java">
            <no-arguments-entry-point-resolver />
            <prototype-object class="org.test.MyComponent">
                <property key="fileName" value="#[sessionVars.filename]" />
            </prototype-object>
        </component>

しかし、式は決して解決しませんか? これを行う別の方法はありますか?

4

2 に答える 2

4

これは、Spring 構成と Mule Expression 言語 (MEL) との混同です。

ポイント 1: コンポーネントが Mule 設定ファイル内で定義されていても。要素 (タグ)<property/> は、Springs Bean スキーマ定義からのものです。したがって、 と のアトリビュート値はMEL によって解釈されません keyvalue

ポイント 2: ロード (インスタンス化) 中に呼び出されるセッター インジェクションとして提供されるため、セッション変数の値 (実行時の値) は使用できません。

これに対する考えられる解決策の 1 つは、コンポーネントに Mule の Callable インターフェースを実装させることです。セッション変数を含む MuleMessage にアクセスできるようにします。

@Override
public Object onCall(MuleEventContext eventContext) throws Exception {          
    MuleMessage muleMessage = eventContext.getMessage();
    muleMessage.getProperty("propertyName", PropertyScope.SESSION);

お役に立てれば。

于 2013-10-22T15:40:34.673 に答える