java - 为什么 Mule ArrayList.contains() 为空/空字符串提供不正确的值

标签 java arraylist mule

我的 Mule 3.3.0 配置中有一个条件表达式,如下所示:

<when expression="#[places.contains(message.payload)]">

. . .

</when>

places 是声明为的局部变量

<set-variable variableName="places" value="{'Buenos Aires', 'Córdoba', 'La Plata'}"/>

在执行上述条件表达式之前,有一个设置有效负载的 XSL 转换器。如果 payload 非空,条件表达式可以正常工作,但在 xsl 转换器不返回结果且 #[payload]empty 的情况下,仍然在条件语句上方返回

我该如何纠正这个问题?

编辑 XSL 转换器声明为:

<xm:xslt-transformer xsl-file="xsl/getPlaces.xslt" returnClass="java.lang.String"/>

最佳答案

你的配置有两个问题:

  • 您用来创建列表的表达式不正确:它实际上只是创建了一个String。请改用 MEL 表达式:

    <set-variable variableName="places"
                  value="#[{'Buenos Aires', 'Córdoba', 'La Plata'}]"/>
    
  • 使用 MEL contains 在此位置列表中查找字符串有效负载:

    #[places contains message.payload]
    

关于java - 为什么 Mule ArrayList.contains() 为空/空字符串提供不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15120496/

相关文章:

java - 如何在服务器端创建java级缓存

java - try catch block 中的 Mockito Thread.class 异常不会提高覆盖率

java - 异构元素列表

java - 递归计算数组的标准差

MULE 生命周期 - 如何 Hook 到启动过程

mysql - Mule - 阻止所有流在单流中的 MySQL 连接失败时关闭

java - 骡子 ESB : Connect to https service

java - Hadoop 字数统计 : receive the total number of words that start with the letter "c"

java - Swing JTable - 在 Shift 键上使用键绑定(bind)而不是 KeyListener

java - 验证两个arraylist中的数据并将其删除