我正在尝试将(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);
我使用db_rooms来获取onPageLoad数据,因此我知道它是有效的数据库对象。
现在稍后,当我尝试再次获取数据库时:
var db:NotesDatabase = viewScope.get("ResroomDb");
这样做会导致无法加载(状态500)。
我尝试了Session和ViewScope,是否将数据库对象存储在Application范围内是一个好主意,因为它仅是一个单页应用程序?
最佳答案
不要在范围内存储任何基于Domino的对象。您不能这样做,因为句柄(从Java对象到基础C ++对象的指针)在每个请求(页面加载,部分刷新等)结束时都被回收。
如果要存储任何内容,请存储路径/副本ID,然后再次通过Session.getDatabase()
检索数据库。与文档相同-存储UNID或NoteID并调用相关的Database
方法。
关于javascript - 如何在XPage中存储IBM Notes数据库对象变量并在以后访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57427180/