如何将SSJS数组转换为CSJS

时间:2018-11-19 11:25:42

标签: javascript arrays xpages xpages-ssjs

我已经设置了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数组。我该怎么办?

1 个答案:

答案 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列表。