如何在页面中存储 IBM Notes 数据库对象变量并稍后访问它

How to store an IBM Notes Database Object variable in an XPage and Acess it later

我正在尝试将 (Javascript IBM Notes) 数据库对象存储在变量 onPageLoad 中,以便稍后在代码中访问它。我尝试设置 viewScope 和 sessionScope 变量,但它们似乎总是 return null.

onPageLoad:

var db_rooms: NotesDatabase = session.getDatabase(session.createName(doc_ProfileConfig.getItemValueString("ServerNA")).getCommon(), doc_ProfileConfig.getItemValueString("FilePathTX"));

viewScope.put("ResroomDb", db_rooms);

我使用 db_rooms 在页面加载上获取数据,所以我知道它是一个有效的数据库对象。

现在,当我再次尝试获取我的数据库时:

 var db:NotesDatabase = viewScope.get("ResroomDb");

这样做会导致无法加载(状态 500)。

我尝试了 Session 和 ViewScope,将数据库对象存储在应用程序范围内 possible/a好主意,因为它只有一个页面应用程序?

不要在范围内存储任何基于 Domino 的对象。你不能,因为句柄(从 Java 对象指向底层 C++ 对象的指针)在每个请求(页面加载、部分刷新等)结束时被回收。

如果要存储任何内容,请存储路径/副本 ID 并再次通过 Session.getDatabase() 检索数据库。对于文档也是如此 - 存储 UNID 或 NoteID 并调用相关的 Database 方法。