2013-02-05 30 views
0

我想獲取新的響應文檔的父文檔,所以我可以複製xpages中的窗體繼承功能。以下是我的代碼和正在返回的錯誤:xpages嘗試獲取文檔parentdoc返回空錯誤

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

當我需要處理變量「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")

+0

我懷疑這將有同樣的問題,當孩子有DOC尚未保存。 –

+0

謝謝你們兩位。兩個答案都很有幫助。我結束了使用dataContexts,除了解決我的問題得到父值更好。除了視圖中需要的元素外,還使用Panu的建議在打開時檢索父文檔數據而不是存儲。非常感謝這兩個。 –

+1

帕努,上述作品爲一個新的兒童文檔 –

3

datasource.getParentId()不會像您所期望的那樣返回NoteID。它返回UnID,這就是爲什麼你需要使用database.getDocumentByUNID,因爲每個人都在做。

另一種方法是從URL獲取父UNID:

param.get("parentId") 

想想也找了,每當孩子被打開,而不是父主題。這樣它就只存儲在一個永遠是好東西的地方。

相關問題