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

変数「ドキュメント」の親ドキュメントのハンドルが必要な場合は、通常、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")などを行うことができます.

于 2013-02-05T18:58:00.733 に答える
3

datasource.getParentId()ご想像のとおり、NoteID は返されません。UnID を返すためdatabase.getDocumentByUNID、Per が行っているように使用する必要があります。

もう 1 つの方法は、URL から親の UnID を取得することです。

param.get("parentId")

代わりに、子が開かれるたびに親サブジェクトを検索することも検討してください。そうすれば、常に良いことである 1 つの場所にのみ保存されます。

于 2013-02-05T18:50:52.930 に答える