【问题标题】:null check in DataWeave 2DataWeave 2 中的空检查
【发布时间】:2018-09-07 11:14:15
【问题描述】:

我的网址中有一个婴儿车,并在 DW 中用作:

<set-variable value=" #[output application/java --- ( (attributes.queryParams.filePath startsWith  ('/opt/mypath/')))] .../>

如果我没有传递任何参数,我会收到异常:

  Message               : "You called the function 'startsWith' with these arguments: 
       1: Null (null)
       2: String ("/opt/mypath/")

     But it expects arguments of these types:
       1: String
       2: String 
 1| output application/java --- ( (attributes.queryParams.filePath startsWith  ('/opt/mypath/')))

1) 如何验证 null?

2)如果没有传递参数,那么我想返回给用户提供参数并避免进一步的流动。是否可以在 DataWeave 中返回?还是我需要使用标准的 Groovy 脚本才能返回?

【问题讨论】:

    标签: mule dataweave


    【解决方案1】:

    您可以使用条件逻辑来防止像这样的空输入:

    if (attributes.queryParams.filePath != null) (attributes.queryParams.filePath startsWith '/opt/mypath/') else null
    

    如果您还需要保护空字符串,我会使用isEmpty

    if (isEmpty(attributes.queryParams.filePath)) null else (attributes.queryParams.filePath startsWith '/opt/mypath/')
    

    但是,如果您事先验证 attributes.queryParams.filePath 不为空,则 DataWeave 代码可以更简单。这是整个事情。如果查询参数为空,这将停止整个流程并返回错误:

    <flow name="flow" doc:id="d891a730-794d-4ca5-b6d9-dd00238d89ba" >
      <http:listener doc:name="Listener" doc:id="a1cadeb8-d589-436c-8342-c13e065e4618" config-ref="HTTP_Listener_config" path="/test"/>
      <validation:is-not-null doc:name="Is not null" doc:id="66577b65-ba8d-4954-b3e7-e598310773ea" value="#[attributes.queryParams.filePath]" message='"filePath" must be included in the query parameters'/>
      <set-variable value="#[attributes.queryParams.filePath]" doc:name="Set Variable" doc:id="68511ea5-25cf-465f-ad89-c33a83ab83ec" variableName="filePath"/>
      <error-handler>
        <on-error-propagate enableNotifications="true" logException="true" doc:name="On Error Propagate" doc:id="ac12ae39-c388-4204-b1b1-b8c42aefcd66" >
        <ee:transform doc:name="Transform Message" doc:id="da695971-3ca4-435e-a4cd-b19fdd431bd6" >
          <ee:message >
            <ee:set-payload ><![CDATA[%dw 2.0
    output application/json
    ---
    error.description
    ]]></ee:set-payload>
            </ee:message>
          </ee:transform>
        </on-error-propagate>
      </error-handler>
    </flow>
    

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 2021-04-28
      相关资源
      最近更新 更多