2014-02-28 3 views
2

다음 HTTP 호출에 대한 페이로드로 맵을 생성하고 2 개의 키 값 쌍으로 생성하려고합니다. 그러나 맵을 작성하기위한 MEL 표현식이 작동하지 않습니다. 그것은 나에게 다음과 같은 예외주고,MEL을 사용하여 Mule Flow에서 페이로드를 페이로드로 설정

MEL provides a streamlined way to access map data. 

Rather than constructing a map with a new statement, and then using its put method to populate it, you can simply write the following: 

[key1 : value1, key2 : value2, . . .] 

을하지만 - -

<sub-flow name="call-myservice" doc:name="call-myservice"> 
    <set-payload value="#[username :${my.username}, password : ${my.password}]" doc:name="Set Payload"/> 
    <https:outbound-endpoint exchange-pattern="request-response" host="${myservice.Host}" method="POST" mimeType="application/json" doc:name="My Service call" path="mypath" port="443"/> 
</sub-flow> 

내가 제안 http://www.mulesoft.org/documentation/display/current/Mule+Expression+Language+MEL

의 지침을 따라

ERROR 2014-02-28 15:27:51,424 [[services-proxy].connector.http.mule.default.receiver.02] org.mule.exception.DefaultMessagingExceptionStrategy: 
******************************************************************************** 
Message    : Execution of the expression "username :abc, password : pwd" failed.   (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: String 
Code     : MULE_ERROR--2 
-------------------------------------------------------------------------------- 
Exception stack is: 
1. [Error: unresolvable property or identifier: username] 
[Near : {... username :abc, pa ....}] 
     ^
[Line: 1, Column: 1] (org.mvel2.PropertyAccessException) 
    org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer:687 (null) 

답변

6

을 당신은 평방 누락 괄호를 사용하여지도를 구분하십시오 (단, Mule 표현을 한정하는 유일한 것임). 로 변경 : <설정 페이로드 값 = "# [[ '이름': '$ {my.username}', '비밀번호

<set-payload value="#[['username' :${my.username}, 'password' : ${my.password}]]" doc:name="Set Payload"/> 
+3

난 당신이 또한 속성 자리 표시자를 사용하는 경우 값을 인용 할 필요가 있다고 생각 ':'$ {my.password} ']] "doc : name ="Payload "/>를 설정하십시오. –

+0

감사! 안톤 당신 말이 맞아요. 따옴표를 붙이면 작동합니다. – user1493140