我尝试使用带有字符串和字符串数组的组件调用方法。
流.xml:
<invoke object-ref="ResponseHandler" method="nullPayload" methodArguments="#[message, #['getProducts', 'getProduct']]" />
ResponseHandler.java:
public class ResponseHandler
{
ResponseHandler()
{
}
public void nullPayload(MessageContext message, ArrayList<String> methods)
{
message.setPayload("");
}
但是当我尝试运行该应用程序时,出现以下错误:
Single method "nullPayload", with "3" arguments not found
知道如何解决这个问题吗?
谢谢
最佳答案
我看到两个问题。首先,您应该关闭 methodArguments 中的第一个表达式,数组的 MEL 语法是 { },表达式将为:
<invoke object-ref="ResponseHandler" method="nullPayload" methodArguments="#[message], #[ { 'getProducts', 'getProduct' } ]" />
但这也会失败,因为您的方法接收 ArrayList 但您正在发送数组。您应该在 MEL 表达式中创建一个 ArrayList,但据我所知,当您使用泛型时,这效果不佳。因此,尝试使用:
<invoke object-ref="ResponseHandler" method="nullPayload" methodArguments="#[message], #[ a = new ArrayList(); a.add('getProducts'); a.add('getProduct'); return a; ]" />
在你的代码中:
public void nullPayload(MessageContext message, ArrayList methods) {
message.setPayload(message.getPayload() + "OK1");
}
我也尝试过更改接收 String[] 的方法,但失败并出现错误,看来 Mule 在这里做得不好。
关于java - 我如何使用 MEL 作为调用的方法参数创建静态字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24274055/