试图获取文档parentdoc的xpages返回空错误

试图获取文档parentdoc的xpages返回空错误,xpages,Xpages,我正在尝试获取新响应文档的父文档,以便可以复制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:NotesDocumen

我正在尝试获取新响应文档的父文档,以便可以复制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: }
datasource.getParentId不会像您预期的那样返回NoteID。它返回UnID,这就是为什么您需要使用database.getDocumentByUNID,正如Per所做的那样

另一种方法是从URL获取父UnID:

param.get("parentId")

也可以考虑在打开子对象时查找父对象。这样,它只存储在一个地方,这总是一件好事。

当我需要变量文档的父文档句柄时,我通常使用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.getItemValueStringSubject等操作。

我怀疑,如果尚未保存子文档,则会出现同样的问题。谢谢大家。两个答案都很有帮助。我最终使用了DataContext,因为解决我的问题对于获取父值来说效果更好。还可以使用Panu的建议在open上检索父文档数据,而不是存储视图中需要的元素。非常感谢这两个。我意识到新的音符并不像我想的那样是吉姆代码中的问题。返回UnID的是document2.getParentId,而不是NoteID。我更新了我的答案。