IBM MobileFirst:从Java- InvokeProcedure调用适配器

时间:2015-01-06 13:33:41

标签: java ibm-mobilefirst mobilefirst-adapters

我正在尝试从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)

令人惊讶的是,这个目前工作正常。我想了解是否,

  1. 是此方案的正确方法,
  2. 将来使用invokeProcedure的3参数重载会有任何问题吗?
  3. 请帮忙。

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对象并对其进行字符串化。