如何在 MEL 中正确地将 ArrayList 转换为 String
How properly convert ArrayList to String in MEL
所以我有有效载荷,其中一部分有这样的数组:
{
...
members [
John,
Robert,
Tony
]
...
}
我尝试将变量设置为:
#[payload.members joinBy(",")]
但它的 return 类型为 java.lang.ArrayList
但是如果对 DW 1.0 做同样的事情(输出到变量):
%dw 1.0
%output application/java
---
payload.members joinBy ","
我按需收到 - java.lang.String
任何建议为什么会这样,或者我在 MEL 中做错了什么,就像在变换组件中一样? (我正在尝试避免在如此简单的步骤中使用转换组件)
您混淆了两种不同的语言。 Mule 3.x 使用 MEL as its expression language. That means that every expression of the form #[...]
is a MEL expression. Mule 3.7+ also supports DataWeave 1 inside the Transform component. Those are two different languages. The joinBy 操作是一个 DataWeave 操作,因此预计它不会在 MEL 表达式中工作。我不确定为什么它不只是抛出错误。
在 MEL 中你可以这样做:
#[ org.apache.commons.lang.StringUtils.join(payload.members, ",") ]
最基本的 Java 表达式与 MEL 兼容。
请注意,在 Mule 4 中,唯一的表达式语言是 DataWeave 2。表达式在 #[...]
中的工作方式与在 Transform 组件中的相同。
所以我有有效载荷,其中一部分有这样的数组:
{
...
members [
John,
Robert,
Tony
]
...
}
我尝试将变量设置为:
#[payload.members joinBy(",")]
但它的 return 类型为 java.lang.ArrayList
但是如果对 DW 1.0 做同样的事情(输出到变量):
%dw 1.0
%output application/java
---
payload.members joinBy ","
我按需收到 - java.lang.String
任何建议为什么会这样,或者我在 MEL 中做错了什么,就像在变换组件中一样? (我正在尝试避免在如此简单的步骤中使用转换组件)
您混淆了两种不同的语言。 Mule 3.x 使用 MEL as its expression language. That means that every expression of the form #[...]
is a MEL expression. Mule 3.7+ also supports DataWeave 1 inside the Transform component. Those are two different languages. The joinBy 操作是一个 DataWeave 操作,因此预计它不会在 MEL 表达式中工作。我不确定为什么它不只是抛出错误。
在 MEL 中你可以这样做:
#[ org.apache.commons.lang.StringUtils.join(payload.members, ",") ]
最基本的 Java 表达式与 MEL 兼容。
请注意,在 Mule 4 中,唯一的表达式语言是 DataWeave 2。表达式在 #[...]
中的工作方式与在 Transform 组件中的相同。