2012-02-06 2 views
2

아웃 바운드 http 양식 기반 끝점에 제출하기 전에 인바운드 http 메시지 (URL 매개 변수로 수신) 페이로드에 몇 가지 추가 정적 데이터를 추가하려고합니다. 다음과 같이 내 노새 설정은 다음과 같습니다노새 페이로드에 추가 데이터를 추가하는 방법은 무엇입니까?

<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

는 우선,이에 대한 변압기가 아닌 구성 요소를 사용합니다. 나는 그루비보다 다른 변압기 생각할 수 없다

둘째는 몸에 파라미터 -지도 - 변압기에 의해 생성 된지도 페이로드를 수정합니다. 당신은뿐만 아니라 식 구성 요소를 사용할 수 있습니다

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

감사합니다. 이것은 효과가 있었다. – groovenarula

+0

AbstractMessageTransformer를 직접 작성하는 것은 어떻습니까? http 요청 매개 변수에 액세스하여 페이로드를 수정할 수 있습니다 (또는 무엇이든 ...) –

+0

Extension을 컴파일하는 것이 더 좋습니다. 그렇지 않으면 스크립트 된 트랜스포머 또는 Mule 3.3 이후 MEL 기반의 표현식 트랜스포머는 HTTP 요청 파라미터에 액세스하고 페이로드를 수정할 수 있습니다. –

0

: 같은 솔루션에 대한

<expression-component doc:name="change_payload"> 
    <![CDATA[#[ message.payload = 'foo';]]]> 
</expression-component> 
관련 문제