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

Luk*_*auk 0 javascript ajax session-variables xpages xpages-ssjs

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

onPageLoad:

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

viewScope.put("ResroomDb", db_rooms);
Run Code Online (Sandbox Code Playgroud)

我使用db_rooms来获取onPageLoad数据,因此我知道它是有效的数据库对象。

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

 var db:NotesDatabase = viewScope.get("ResroomDb");
Run Code Online (Sandbox Code Playgroud)

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

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

Pau*_*ers 5

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

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