如何在页面中存储 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
方法。
我正在尝试将 (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
方法。