【问题标题】:Can I access Notes documents/collections via client side JS?我可以通过客户端 JS 访问 Notes 文档/集合吗?
【发布时间】:2025-12-15 23:50:01
【问题描述】:

我想知道是否可以通过 Xpages 中的客户端脚本处理笔记视图和文档集合?

到目前为止的故事......我正在构建一个人力资源系统,其中包括一个完整的缺勤部分(假期、疾病、其他缺勤等)。我在笔记客户端中编写了一个按钮,该按钮创建一个 Excel 电子表格,根据缺勤文档(getview、getalldocumentsbykey 进入集合)显示当前用户过去 12 个月缺勤的日历。它使用每个文档中的各种字段(包括多值字段)循环集合,以计算缺勤时长、全天/半天等,并在工作表上以不同颜色标记它们,并带有超链接以访问文档。

它还计算诸如 Bradford Factor 评级之类的其他内容,并围绕用户工作日进行计算。

任何人,我一直面临着让整个系统在浏览器中运行的挑战,消除对笔记客户端的任何需求,所以....回到我原来的问题,我需要能够获得一组文档通过一个键从注释视图中,然后我可以通过客户端 javascript 访问该字段。

这可能吗?如果需要,我可以提供更多信息...

【问题讨论】:

  • 您可以使用 XPages 完成所有这些工作(例如,使用服务器端 JS 或使用 Java)。您是否已经为此解决方案使用 XPages?
  • 我确信即使没有 xPages 也可以使用 LotusScript Web 代理完成大部分工作,但关键问题是您使用什么 API 将数据放入 Excel。你能告诉我们一些实际的代码吗?如果 Excel 的 API 必须是客户端的,那么 DXL 可能是最好的选择——但我不想把它当作给定的。
  • lotusscript 版本使用:Set xlApp = CreateObject("Excel.Application") 创建 Excel 对象并从那里构建。 CSJS 版本使用:var xlApp = new ActiveXObject("Excel.Application") 来实现相同的结果。我假设它必须是客户端才能在用户机器上启动 Excel 对象,而不是在服务器上弹出 Excel 打开? @PerHenrikLausten @RichardSchwartz
  • 代码也很大,如果有帮助,很乐意通过电子邮件发送给它?
  • 我想另一个问题是,如果保存为 Excel 格式不是真正的目标,那么您是否还在为 Excel 烦恼?为什么不直接对 XPage 进行编程以创建用户可以查看的漂亮的行/列显示?

标签: javascript client-side lotus-notes xpages lotusscript


【解决方案1】:

您是否考虑过 Notes 浏览器插件?它应该让您无需修改​​代码即可通过浏览器运行基于 Notes 的应用程序。

Here is a write up about it

【讨论】:

  • 测试版可用。将在 30 天内推出。
  • 除了这部分,整个应用都是基于 Xpages 的,所以我认为这没有任何用处..
【解决方案2】:

我认为你应该选择 REST。在 Domino 中,它可以提供来自视图/文档的 JSON 格式的数据,您可以在本机客户端 JavaScript 中使用这些数据。 有关更多信息,请尝试搜索 google 和 ddwiki,例如 this tutorial video

【讨论】:

    【解决方案3】:

    已编辑以强调 &ReadViewEntries 并添加细节

    纯粹在浏览器端执行此操作最好的方法是使用 &ReadViewEntries URL 命令获取 DXL 或 JSON,然后编写 Javascript 来处理数据并在本地执行与 CreateObject 调用等效的操作。您可以找到 &ReadViewEntries here 的文档。 (@Panu 已经提到了 DDS,这也是个好主意。)

    或参阅here 获取一些示例代码,该代码展示了一种技术,用 LotusScript 编写的 Domino Web 代理可以使用该技术来创建将发送到浏览器的数据,并带有一个内容类型的标题,可以在 Excel 中打开它.我还没有验证这个特定的代码,但我已经看到了对该技术的其他参考。此特定代码可能无法为您提供所需的控制——例如颜色和链接,但我认为也可以将数据实际生成为 xlsx 格式的 XML 并以类似方式发送。

    【讨论】:

      【解决方案4】:

      您可以通过 Java 和 CORBA 从客户端 JavaScript 访问所有 Domino 对象。您只需要一个将 Session 返回到 javascript 的小程序。以下是 Designer 帮助中的说明:

      http://www-12.lotus.com/ldd/doc/domino_notes/rnext/help6_designer.nsf/9/0d05bb3cec358f7085256c54004bdbff

      然而,正如 Per 所建议的,现在 XPages 中通常使用客户端和服务器端 Javascript 的组合来代替 CORBA。 Domino Data Service 是从服务器获取数据到(例如)客户端 javascript 的最新方法。

      您可能还想查看Apache POI,您可以使用它在服务器端创建 Excel 文件。 ActiveX 只能在 IE 中工作,尽管有插件可以让它在其他浏览器上工作。

      编辑

      我通常对“客户端和服务器端 Javascript 的组合”做的是在客户端使用dojo.xhrGet(或xhrPost)。在服务器上,我有一个 XPage(早期代理),它收集数据并以 JSON 格式返回。

      • 帕努

      【讨论】:

      • CORBA 看起来很有希望,尽管我对 Java 一无所知。看起来我需要创建一个包含 import lotus.domino.*; public class dummy extends AppletBase(){} 的小程序?然后我是否将其作为资源添加到 Xpage 中? (Java 似乎没有选项).. @Panu
      • 是的,小程序需要返回 Notes Session。小程序代码位于我链接的页面上的“示例”链接下。将带有 Designer 的小程序添加到:资源/小程序。使用 HTML 在页面上加载小程序:eyeasme.com/Shayne/HTML5_APPLETS。在这个解决方案中,CORBA/IIOP 需要在服务器上启用,它可能不是默认的。
      • 你可以这样做并用 javac.exe 编译它。在 Designer Eclipse 中创建 Java 项目并从那里开始可能更容易。
      • 不知道 Java 我在这里有点困惑......我设法通过将 CLASSPATH 设置为指向几个必需的 Notes jar 文件(根据说明)来编译小程序,但是它会仅当我在第二行中删除 AppletBase 之后的括号时才编译。将它们留在其中只是错误(期望 { )。我按照描述通过资源添加了小程序,并使用 HTML 示例将代码添加到页面,但小程序错误说它找不到名为“dummy”的类。到目前为止,这是唯一能让我走到任何地方的方法,因此我们将不胜感激任何进一步的帮助! @Panu
      • 还有几个选项现在从我的 Designer 资源菜单中消失了,只剩下图像、文件、样式表和主题!所以我现在也无法真正进入小程序区域!