我已经设置了jsonRPC服务:
<xe:jsonRpcService id="jsonRpcServiceKeywords"
serviceName="rpcServiceKey" rendered="true">
<xe:this.methods>
<xe:remoteMethod name="getKeyWordalias">
<xe:this.arguments>
<xe:remoteMethodArg name="key" type="string" />
</xe:this.arguments>
<xe:this.script><![CDATA[var values = getKeywordAliasValues("matterStatus",key);
return values;]]></xe:this.script>
</xe:remoteMethod>
</xe:this.methods>
</xe:jsonRpcService>
函数getKeywordAliasValues返回一个SSJS数组。
function getKeywordAliasValues(key,values){
var aliasValues = new Array();
// routine to add values to array
return aliasValues;
}
当我调用服务frpm客户端javaScript时:
var alias = rpcServiceKey.getKeyWordalias("10");
alert(alias)
alert(alias[0])
我首先得到一个返回的对象。其次,消息未定义。
我的SSJS函数中的Print语句确认该数组包含值。
我假设必须将SSJS数组转换为CSJS数组。我该怎么办?
答案 0 :(得分:0)
我没有太多使用JsonRPCService,但是我认为最好的选择是返回JSON。我不确定它是否需要JSON对象或JSON数组是否可以工作。如果一个JSON数组就足够了,那么Domino中最好的方法是使用com.ibm.commons.util.io.json.JsonJavaArray
。这可以在其构造函数中使用Java列表或对象,因此com.ibm.commons.util.io.json.JsonJavaArray jja = new com.ibm.commons.util.io.json.JsonJavaArray(myArray)
。因为它是SSJS,所以您需要导入软件包或使用完整的层次结构名称。它可能无法设计为处理SSJS数组,具体取决于在Java中如何进行转换。如果您希望仅用JsonJavaArray
替换SSJS数组,则将其创建为空白数组后,其工作方式就类似于Java列表。