我必须通过SSJS调用Web服务的方法。该方法的输入参数之一是结构数组。 Web服务使用者是用java实现的。我想知道如何在SSJS中声明和实例化java strucuture数组。
该方法的签名是:
(short,short,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String, short,java.lang.String,java.lang.String,ESTRUTURACHECKLIST [])
我根据你的建议创建了数组:
lst=new ArrayList();
var chk:xx.xxx.xxxx.xxxx.ESTRUTURACHECKLIST=new
xx.xxx.xxxx.xxxx.ESTRUTURACHECKLIST();
chk.setCONTEUDOCHECKLIST("XXXX");
chk.setDESCRICAOCHECKLIST("CÓDIGO USUÁRIO");
lst.add(chk);
var chk1:xx.xxx.xxxx.xxxx..ESTRUTURACHECKLIST=new
xx.xxx.xxxx.xxxx..ESTRUTURACHECKLIST();
chk1.setCONTEUDOCHECKLIST("TESTE");
chk1.setDESCRICAOCHECKLIST("NOME USUARIO");
lst.add(chk1);
var chk2:xx.xxx.xxxx.xxxx..ESTRUTURACHECKLIST=new
xx.xxx.xxxx.xxxx..ESTRUTURACHECKLIST();
chk2.setCONTEUDOCHECKLIST("TESTE NOTES");
chk2.setDESCRICAOCHECKLIST("NOME NOTES");
lst.add(chk2);
arr=lst.toArray();
当我按照建议创建结构数组时,java方法会给出错误并且无法识别最后一个数组。可以肯定的是,我通过删除数组来更改实例化Web服务客户端的类的签名,没有错误。我认为发生的是java类没有识别SSJS传递的数组与指定结构的数组。
调用该方法的错误是:
执行Javascript操作表达式时出错 脚本解释器错误,line = 75,col = 13:Java方法'xxxxx(数字,数字,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,[Ljava.lang.Object;)'在java上找不到类xx.xxxx.xxxx.xxx
答案 0 :(得分:1)
如果您需要给定对象的 Java数组,可以先将它们放入 List 类结构中,如ArrayList或Vector,然后检索Java数组通过调用 toArray 方法。
这是一个可以帮助您的SSJS代码段:
importPackage(java.util);
importPackage(br.com.mercantil.dmdws);
var lst,chk,arr;
lst=new ArrayList();
chk=new ESTRUTURACHECKLIST();
// ... do whatever you need to do to the object
lst.add(chk);
// ... repeat previous step if needed
arr=lst.toArray(); // this is the Java array
<强>更新强>
如果您使用的方法无法处理Object数组,因为它要求数组属于某个类,您可以提供一个数组,其中包含所需的运行时类型作为 toArray 方法的第一个参数。由于我不知道如何在SSJS中创建或投射这样的数组,我会添加一个&#34;帮助&#34; br.com.mercantil.dmdws.ESTRUTURACHECKLIST
类的方法,看起来像这样
public static ESTRUTURACHECKLIST[] getJavaArray(int n) {
return new ESTRUTURACHECKLIST[n];
}
并按以下方式在上面的示例中创建数组:
arr=lst.toArray(ESTRUTURACHECKLIST.getJavaArray(lst.size()));
答案 1 :(得分:0)
使用相关类的全名,包括包名,将起作用。例如,如果需要传递Java HashMap,则可以使用:
var myMap:java.util.HashMap = new java.util.HashMap();
这假设代码可以访问相关的类,例如,这里的HashMap类是可访问的,因为它是Java核心可以访问的Java核心的一部分。