我正在尝试从Java调用适配器
DataAccessService service = WorklightBundles.getInstance().getDataAccessService();
ProcedureQName procedure = new ProcedureQName(adapterName,adapterProc);
service.invokeProcedure(procedure, String);
当上述invokeProcedure中的String必须作为输入传递给调用的适配器时,会出现此问题。如果没有参数需要它可以工作,但是当我传递一个字符串(例如“Hello”)时它会中断。原因是,当调用它时,String参数中传递的值不会被 Javascript adapter-impl.js。解析,因此会抛出错误
由于无效,无法调用适配器名称/过程名称 运行时传递的String参数中的字符('H'第1行)
我尝试在 com.ibm.json.java。* 包中使用 JSONArray / JSONObject ,但错误仍然存在。
因此尝试使用invokeProcedure(ProcedureQName,JSONArray,long nRequestID)
的其他重载。像,
service.invokeProcedure(procedure, objArray,-1)
令人惊讶的是,这个目前工作正常。我想了解是否,
请帮忙。
答案 0 :(得分:2)
您需要将参数作为字符串化数组传递。例如。
service.invokeProcedure(procedure, "[1,2,3,4]");
service.invokeProcedure(procedure, "[1,2,'three','four']");
service.invokeProcedure(procedure, "[1,2,true,false]");
如果是单个参数,只需执行一个具有单个值的数组
service.invokeProcedure(procedure, "['myStringParam']");
另一种选择是创建JSONArray对象并对其进行字符串化。