我正在尝试获取新响应文档的父文档,以便我可以在xpages中复制表单继承的功能。以下是我的代码和返回的错误:
Error while executing JavaScript action expression
Script interpreter error, line=3, col=60: 'parentDoc' is null
JavaScript code
1: if (document2.isNewNote()) {
2: var parentDoc:NotesDocument = database.getDocumentByID(document2.getParentId());
3: getComponent("immediateParentSubject1").setValue(parentDoc.getItemValueString("Subject"));
4: }
答案 0 :(得分:4)
当我需要变量“document”的父文档句柄时,我通常使用dataContext和getParentDocumentUNID()。您可以将其用于新文档(尚未保存):
<xp:this.dataContexts>
<xp:dataContext var="parentDoc">
<xp:this.value><![CDATA[#{javascript:
try {
if (document.isResponse()) {
return database.getDocumentByUNID(document.getDocument().getParentDocumentUNID());
} else {
return "";
}
} catch(e) {
return "";
}}]]></xp:this.value>
</xp:dataContext>
</xp:this.dataContexts>
然后,您可以在其他控件中使用parentDoc并执行parentDoc.getItemValueString("Subject")
等。
答案 1 :(得分:3)
datasource.getParentId()
不会像您期望的那样返回NoteID。它返回UnID,这就是你需要像Per那样使用database.getDocumentByUNID
的原因。
另一种方法是从URL获取父UnID:
param.get("parentId")
每当打开一个孩子时,也要考虑查找父主题。这样它只存储在一个地方,这总是一件好事。