XPages:生成JSON服务器端,使用客户端

时间:2017-07-25 22:10:21

标签: java json ajax xpages

它不应该是一个如此困难的障碍,但我只是看不出如何克服这个障碍。我想在服务器上使用ArrayObject和ObjectObject对象生成JSON结构,并将其用作服务器端数据源(工作)和客户端。如何轻松地将数据从服务器传输到客户端?

我在ScriptBlock中尝试使用toJson,但它失败了(由于Java错误,如果我没记错的话,有FBSUndefined的东西)。我也在jsonRpcService控件中尝试使用toJson,但是出现了同样的错误。我会尝试找到一些其他方法来对我拥有的对象进行字符串化,但这就是它。我可以进行Ajax调用,但这将是最后的解决方案。

您是否有其他/更好的方法将服务器对象传输到浏览器?

谢谢!

3 个答案:

答案 0 :(得分:3)

最简单的方法是将代码包装到服务bean中并使用自定义Rest服务(它是ExtLib中的控件)。我写了一篇关于步骤的文章:

xpath

如果您只使用SSJS ......方法仍然有效。您可以使用SSJS在控件内编写响应。

答案 1 :(得分:3)

从Java,我建议使用com.ibm.commons.util.io.json.JsonJavaArraycom.ibm.commons.util.io.json.JsonJavaObject。它们就像地图/列表一样工作,并且可以包含这些接口(因此我通过.put(myKey, myArrayList)将ArrayList添加到JsonJavaObject中)。例如,要输出作为输出脚本块的JSON,只需调用JsonJavaObject.toString()JsonJavaArray.toString()。这是我即将在图表上发布的博客文章中展示的解决方案。

答案 2 :(得分:1)

获取 FBSUndefined 错误表示您要创建明确的JSON的对象包含“未定义”值。例如,如果将对象的属性设置为等于不包含此属性的另一个对象的属性,则会发生这种情况。

IMO您的数据是问题,而不是您想要创建JSON的方式。您应该首先检查生成该对象的代码。如果找不到导致问题的部分,可以编写一个辅助函数来迭代遍历该对象并搜索未定义的值。