我在ssjs库中声明并使用了一个全局变量,如下所示:
var backendDoc:NotesDocument = null;
function savedata () {
print (backendDoc.getItemValueString("fieldname")); // crash here
}
在将docuemnt模式从read更改为edit后,我在Edit按钮中为其指定了一个文档对象:
backendDoc = document1.getDocument(); //从数据源中获取名为document1的后端文档
上面函数中的代码返回错误NotesDocument.getItemValueString(“string”))null。显然,backendDoc为null。
如何在ssjs库中分配值和使用全局变量?提前致谢
答案 0 :(得分:5)
您的代码有两个问题:
你应该使用范围变量。脚本库中的全局变量实际上是应用程序全局变量(想想applicationScope),如果内存变紧,可能会随时卸载(它们的行为取决于XPages版本)
您不能在此处使用NotesObjects。在调用之间,释放了支持JS对象的C Object,并且您的对象变为无效。
您可以将NoteId存储在作用域变量中,并每次检索NotesDocument或实际使用JSON结构来保留您感兴趣的值,并且只在实际需要时读取/写入(加载/保存事件)。希望这有帮助
答案 1 :(得分:1)
我认为你必须使用一个范围变量来存储文档的universalid。然后,可以在任何脚本中使用它来初始化后端文档。
从ssjs可以使用put方法和get方法设置范围变量来读取变量。在会话范围中设置和读取范围变量的示例:
sessionScope.put(“myvar“,“myvalue“)
sessionScope.get(“myvar“)
要了解有关范围变量的更多信息,请观看此内容 http://notesin9.com/index.php/2009/11/07/episode-4-intro-to-scoped-variables/