【问题标题】:XPages: generate JSON server side, use client sideXPages:生成 JSON 服务器端,使用客户端
【发布时间】:2018-01-01 00:47:14
【问题描述】:

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

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

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

谢谢!!

【问题讨论】:

  • 获取 FBSUndefined 错误表明您要创建 JSON 的对象明确包含“未定义”值。例如,如果您将一个对象的属性设置为等于另一个不包含该属性的对象的属性,就会发生这种情况。 IMO 您的数据是问题所在,而不是您想要创建 JSON 的方式。您应该首先检查生成对象的代码。如果您找不到导致问题的部分,您可以编写一个辅助函数来迭代地遍历对象并搜索未定义的值...
  • 啊...哎呀...我删除了大部分JSON生成代码,只留下一个小例子,现在它似乎可以工作...:$
  • 已解决...如果您将评论提升为答案,我可以关闭该问题。

标签: java json ajax xpages


【解决方案1】:

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

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

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

【讨论】:

  • 我确实为其他事情使用了自定义的 Rest 服务,但在这里我想让它变得非常简单,即只是 JsonRpc 的东西。它终于奏效了。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    收到 FBSUndefined 错误表明您要创建 JSON 的对象明确包含“undefined”值。例如,如果您将一个对象的属性设置为等于另一个不包含该属性的对象的属性,就会发生这种情况。

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

    【讨论】:

      猜你喜欢
      • 2012-05-19
      • 2020-07-19
      • 2019-01-16
      • 2013-05-16
      • 1970-01-01
      • 2016-08-22
      • 2010-09-19
      • 1970-01-01
      • 2021-01-05
      相关资源
      最近更新 更多