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

XPages: generate JSON server side, use client side

这应该不是什么难关,但我就是看不出如何跨过这一关。我想在服务器上生成一个 JSON 结构,使用 ArrayObject 和 ObjectObject 对象,并将其用作服务器端数据源(有效)和客户端。如何轻松地将数据从服务器传输到客户端?

我尝试在 ScriptBlock 中使用 toJson,但它失败了(由于 Java 错误,如果我没记错的话是 FBSUndefined 的问题)。我还尝试在 jsonRpcService 控件中使用 toJson,但出现相同的错误。我将尝试找到一些其他方法来对我拥有的对象进行字符串化,但仅此而已。我可以进行 Ajax 调用,但那将是不得已的解决方案。

你有 other/better 方法将服务器对象传输到浏览器吗?

谢谢!!

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

https://www.wissel.net/blog/2014/10/custom-rest-service-in-xpages-using-a-service-bean.html

如果您只使用 SSJS...该方法仍然有效。您可以使用 SSJS 对控件内的响应进行编码。

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

出现 FBSUndefined 错误表明您要创建 JSON 的对象明确包含“undefined”价值。例如,如果您将一个对象的 属性 设置为等于另一个不包含此 属性.

的对象的 属性,就会发生这种情况

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