2016-07-19 88 views
0

我有一個使用document1.save()在SSJS內保存文檔的XPage。在此之後,我調用一些Java代碼來對文檔和保存的新數據進行一些額外的處理;我將document1.getDocument()傳遞給Java函數。在Java函數中,它調用Document.save()來再次保存文檔。這似乎是解決衝突的祕訣,我不知道爲什麼。任何人都可以解釋發生了什麼? TIA! (除了瞭解爲什麼發生這種情況,如果任何人有一個更好的方式做我在做什麼建議,我會很感激的。)XPage:通過SSJS和Java保存文檔時的文檔衝突

裏德

+0

你可以嘗試通過使用getDocument(真)的文件?這可能會阻止創建保存衝突... –

+0

嗨邁克爾。如果在將文檔傳遞給我的java代碼時使用getDocument(true),那麼不幸的是我仍然會遇到保存衝突。我注意到的一件事是,如果我在我的SSJS中使用document1.getDocument()。save()而不是document1.save(),我不會發生衝突。它似乎正確地保存了更改,但我需要再測試一下。這似乎並不完全正確.... –

+0

你有沒有試過只保存在java中? –

回答

1

您可以在Java中使用「resolveVariable」獲取NotesXspDocument(在Java中稱爲DominoDocument)。然後,您可以在Java中的DominoDocument對象上保存,而不是在SSJS中保存。

如果您使用JSFUtil(可在許多XPage開源項目中找到)或使用自己的幫助器方法,則可以執行此操作來獲取您的DominoDocument(將「currentDocument」替換爲文檔數據源的名稱):

DominoDocument uidoc = (DominoDocument) JSFUtil.resolveVariable("currentDocument"); 

的resolveVariable方法是這樣的:

public static Object resolveVariable(final String variable) { 
    return FacesContext.getCurrentInstance().getApplication().getVariableResolver().resolveVariable(FacesContext.getCurrentInstance(), variable); 
} 
+0

謝謝,Per!我沒有意識到這一點。我目前生病了,但會試一試。看起來它可能會解決潛在的問題。 –

+0

很高興知道這件事。儘管如此,在我的測試中,當我在我的Java代碼中調用DominoDocument.save()而不是在我的SSJS中調用document1.save()時,仍然存在衝突。我希望我知道幕後發生了什麼事情導致這.... –