java - 我如何使用 MEL 作为调用的方法参数创建静态字符串数组

标签 java mule

我尝试使用带有字符串和字符串数组的组件调用方法。

流.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/

相关文章:

java - 从 Oracle 触发器启动 Java Web 应用程序中的流程

java - 在 Java 中创建一个简单的 Restful api

java - 从 Mule 3.6.2 迁移到 3.8.2

c++ - 与 Mule/ActiveMQ 和 C++ Stomp 的客户端通信

java - 为什么我的 Controller 没有与我的存储库连接

java - 在 Web 应用程序中从 java 设置 Oracle NLS_LANGUAGE

java - 即使主线程执行完成,Java应用程序如何继续运行?

mule - 从 Mule 中的消息流中剥离非法字符

xml - 骡子 3.9.5 无法将 xml dom 转换为 xml