2012-02-06 17 views
2

アウトバウンドHTTPフォームベースのエンドポイントに送信する前に、(URLパラメータとして受信した)受信HTTPメッセージにいくつかの追加の静的データを追加しようとしています。私のラバの設定は次のとおりです。ミュールペイロードに追加データを追加するには?

<flow name="login" doc:name="login"> 
    <http:inbound-endpoint exchange-pattern="request-response" address="http://localhost:8081/login" doc:name="Login"/> 

    <http:body-to-parameter-map-transformer doc:name="Body to Parameter Map"/> 

    <http:outbound-endpoint address="http://localhost:8090/mayapp/Main/login.do" 
      method="POST" contentType="application/x-www-form-urlencoded" exchange-pattern="request-response"> 
    </http:outbound-endpoint> 
</flow> 

上記は非常にうまくHTTPフォームのPOST(名前/値のペア)にURLパラメータを変換します。私が今必要とするのは、POST(ed)データに新しい名前と値のペアを追加する機能です。私が転記しているフォームには、変換プロセスの一部として処理したいいくつかの静的データ(非表示のHTMLフィールドとして表示される)が必要です。

カスタムコンポーネントを使用してこれを達成できました。私はMuleのネイティブトランス/メッセージプロセッサを使ってこれを処理する簡単な方法があるのだろうかと思います!

答えて

4

まず、実際にはペイロードデータで行っている変換であるため、トランスフォーマーを使用し、コンポーネントは使用しません。

第2に、body-to-parameter-map-transformerによって作成されたマップペイロードを変更するために、Groovy以外のトランスフォーマーを考えることはできません。以下のような何か:

<script:transformer> 
    <script:script engine="groovy"> 
     <script:text> 
      payload['newKey'] = 'newValue' 
     </script:text> 
    </script:script> 
</script:transformer> 
+0

感謝を。これはうまくいった。 – groovenarula

+0

あなた自身のAbstractMessageTransformerを書くのはどうですか? httpリクエストパラメータにアクセスしてペイロードを変更することができます(または何でも...) –

+0

あなたの内線番号をコンパイルすることをお勧めします。さもなければ、スクリプト化されたトランスフォーマー、あるいはMule 3.3以降、MELベースのエクスプレッショントランスフォーマーは、HTTPリクエストパラメータにアクセスしてペイロードも変更することができます。 –

0

あなたは、同様の式成分を使用することができます解決のための

<expression-component doc:name="change_payload"> 
    <![CDATA[#[ message.payload = 'foo';]]]> 
</expression-component> 
関連する問題