0

我正在尝试获取新响应文档的父文档,以便可以在 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: }
4

2 回答 2

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>

You can then use parentDoc in other controls and do parentDoc.getItemValueString("Subject") etc.

于 2013-02-05T18:58:00.733 回答
3

datasource.getParentId()不会像您预期的那样返回 NoteID。它返回 UnID,这就是为什么你需要database.getDocumentByUNID像 Per 一样使用它。

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

param.get("parentId")

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

于 2013-02-05T18:50:52.930 回答