有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我的Java类返回ArrayList<String>,但不会填充我的WEBMethods StringList,为什么?

我试图用ArrayList填充WEBMethods字符串列表,但变量未填充,WEBMethods中未发生错误。为什么我的字符串列表没有填充

问题:字符串列表没有用Java返回的ArrayList填充

代码:

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

   listOfFileName = FindArrayListOfFiles.getMyFileList();

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

enter image description here

我的名单上什么都没有,我不确定为什么会这样

enter image description here


共 (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是一个零长度数组,因此设计器没有值显示在服务结果选项卡的右列中。如果在调用.toArray()之前至少向ArrayList添加了一个元素,那么设计器将向您展示一些东西:结果数组的内容

    我在Designer截图中注意到的另一个问题是ListOfFileNamesObject[],而不是String[]。这是因为您使用的是不带参数的^{},它返回一个Object[]。使用另一个版本^{},如下所示,以确保返回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();