【问题标题】:You called the function 'Value Selector' with these arguments您使用这些参数调用了函数“值选择器”
【发布时间】:2021-06-27 13:34:27
【问题描述】:

我正在使用 Mulesoft 实施 LoanBroker,但在发送请求时出现错误消息。我从 Postman 和 Mulesoft Anypoint Studio 收到以下错误消息:

ERROR 2021-06-27 15:20:51,133 [[MuleRuntime].uber.04: [loanbroker].LoanBrokerFlow_Gr7.CPU_LITE @254be3ee] [processor: LoanBrokerFlow_Gr7/processors/0; event: 7e49f560-d74a-11eb-b598-b66921dc5aa5] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler: 
********************************************************************************
Message: "You called the function 'Value Selector' with these arguments: 
  1: Binary ("" as Binary {base: "64"})
  2: Name ("amount")

But it expects one of these combinations:
  (Array, Name)
  (Array, String)
  (Date, Name)
  (DateTime, Name)
  (LocalDateTime, Name)
  (LocalTime, Name)
  (Object, Name)
  (Object, String)
  (Period, Name)
  (Time, Name)

1| payload.amount
   ^^^^^^^^^^^^^^
Trace:
  at main (line: 1, column: 1)" evaluating expression: "payload.amount".
Element               : LoanBrokerFlow_Gr7/processors/0 @ loanbroker:bi_gruppe7.xml:34 (Copy_of_setAmount)
Element DSL           : <set-variable value="#[payload.amount]" doc:name="Copy_of_setAmount" doc:id="cbcca557-1a69-4cf2-80b1-64333175589d" variableName="amount"></set-variable>
Error type            : MULE:EXPRESSION
FlowStack             : at LoanBrokerFlow_Gr7(LoanBrokerFlow_Gr7/processors/0 @ loanbroker:bi_gruppe7.xml:34 (Copy_of_setAmount))

  (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

谁能帮帮我?

谢谢

【问题讨论】:

    标签: postman anypoint-studio mulesoft


    【解决方案1】:

    您可能在 Postman 的 HTTP 请求中发送了一些正文,但 Mule 不知道如何读取它。也许您没有在请求中使用 Content-Type 标头让 DataWeave 知道它是 JSON (application/json) 或 XML (application/XML)。 确保您发送正确的内容类型。

    【讨论】:

      【解决方案2】:

      这通常发生在尝试访问像 json 这样的有效负载的内部值但传入的有效负载实际上不是 json 类型时。

      可以检查负载mediaType,然后尝试访问金额以避免值选择器异常。

      %dw 2.0
      output application/java
      ---
      if( !isEmpty(payload) and payload.^mediaType contains "json" )
         payload.amount
      else
         read(payload, "application/json").amount //best effort
      

      建议创建一个单独的 dataweave 文件,如 dwl/set-amount.dwl 并引用它。

      【讨论】:

        【解决方案3】:

        我遇到了同样的情况。我确切地知道base64是一个json。所以,我尝试通过

        设置 MIME 类型
        <set-payload value="#[payload]" doc:name="Set Payload" mimeType="application/json"/>
        

        它对我有用。

        【讨论】:

          猜你喜欢
          • 2021-05-18
          • 2012-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多