-1

我正在尝试使用 ArrayList 填充 WEBMethods 字符串列表,并且未填充变量,并且 WEBMethods 中没有发生错误。为什么我的字符串列表没有填充。

问题:字符串列表未填充从 Java 返回的 ArrayList?

代码:

   This is setting no value to the String List  -->

   listOfFileName = FindArrayListOfFiles.getMyFileList();

getMyFileList() 未将 ArrayList 的值设置为 Java 流服务中的字符串列表。当我打开它并查看时,除了我的值不在字符串列表中之外,webmethods 上没有错误。

在此处输入图像描述

我的列表中没有任何内容,我不确定为什么会这样。

在此处输入图像描述

4

1 回答 1

1

在您原始未编辑问题的代码中,没有元素被添加到 java.util.ArrayList 对象中。

java.util.List<String> list = new java.util.ArrayList<String>();
Object[] array = list.toArray(); // array.length = 0

IDataCursor cursor = pipeline.getCursor();
IDataUtil.put(cursor, "array", array);
IDataUtil.put(cursor, "array.length", array.length);
cursor.destroy();

您在 Designer 中的“服务结果”选项卡的屏幕截图实际上显示ListOfFileNames了您的服务正确返回的内容,因此您的部分代码正在运行。我知道这一点,因为如果它没有被退回,那么它根本不会列在“服务结果”选项卡中。它在那里列出的事实意味着它已正确返回。

但是您认为它不起作用的原因是因为ListOfFileNames它是一个长度为零的数组,因此 Designer 在“服务结果”选项卡的右列中没有可显示的值。ArrayList如果您在调用它之前至少添加了一个元素.toArray(),那么 Designer 将向您展示一些内容:结果数组的内容。

我在 Designer 屏幕截图中注意到的另一个ListOfFileNames问题Object[]String[]. 那是因为您使用的是.toArray()不带参数的,它返回一个Object[]. 使用另一个版本,.toArray(T[] a)如下所示,以确保您得到一个String[]返回:

java.util.List<String> list = new java.util.ArrayList<String>();
list.add("item1");
String[] array = list.toArray(new String[0]); // array.length = 1

IDataCursor cursor = pipeline.getCursor();
IDataUtil.put(cursor, "array", array);
IDataUtil.put(cursor, "array.length", array.length);
cursor.destroy();
于 2014-02-01T11:49:50.237 回答