我收到错误“异常发生,调用方法NotesDatabase.createDocument()null”为以下内容:
var db:NotesDatabase = session.getDatabase("", viewScope.targetDb);
if (db != null) {
if(db.isOpen()){
}else{
db.open();
}
} else {
}
var doc:NotesDocument = db.createDocument();
评论: 数据库db可用且“打开”。 用户在targetDb中拥有足够的权限来创建文档。
有什么问题?
根据Paul Stephen Withers的提示,我将db.isOpen更改为db.isOpen()。 现在db.open()给出错误“异常发生调用方法NotesDatabase.open()null”尽管我可以在viewScope变量中获取服务器,FilePath等。
答案 0 :(得分:2)
更改
var db:NotesDatabase = session.getDatabase("", viewScope.targetDb);
到
var db:NotesDatabase = session.getDatabase(currentDatabase.getServer(), viewScope.targetDb);
这适用于网络和XPinC。
XPages与公式不同,它不喜欢服务器名称的空字符串定义,这与声明的文档相反(对于服务器参数NotesSession.getDatabase - javascript):]
数据库所在的服务器的名称。使用null来 指示会话的环境,例如,当前计算机
使用null或“”给出错误500,它会出现。
如果符合以下条件,问题中的代码将起作用:
答案 1 :(得分:1)
我怀疑原因是你正在检查db.isOpen
。您应该检查db.isOpen()
。
值得注意的是session.getDatabase(String, String)
不会返回null(除非您正在使用OpenNTF Domino API)。它返回一个未打开的Database对象。所以if语句是无关紧要的。最佳做法是将服务器名称传递给session.getDatabase()
- 如果应用程序曾在XPiNC中与您当前的代码一起使用,那么您将获得不同的结果。
无论个人'用户访问,"最大的Internet名称和密码"在ACL的“高级”选项卡上将覆盖该值。如果最大互联网访问权限为“无访问权限”,则无法创建文档。但我怀疑这不是一个因素。
答案 2 :(得分:0)
专业提示 - 获取调试工具栏并使用该工具栏将消息打印到XPage调试工具栏,以查看正在进行的操作以及是否正在设置viewScope变量。另外,学习使用try catch块来捕获异常并将错误消息打印到调试工具栏。你会发现你的问题。 https://www.openntf.org/main.nsf/project.xsp?r=project/XPage%20Debug%20Toolbar