2016-07-19 1 views
0

document1.save()を使用してSSJS内に文書を保存するXPageがあります。この後、私はいくつかのJavaコードを呼び出して、ドキュメントと保存された新しいデータの追加処理を行います。 document1.getDocument()をJava関数に渡します。 Java関数では、Document.save()を呼び出して文書を再度保存します。これは救済紛争を起こすためのレシピのようですが、理由はわかりません。誰でも何が起こっているのか説明できますか? TIA! (なぜこれが起こっている理解することに加えて、誰もが私がやっている行うには良い方法のための提案を持っている場合、私はそれを感謝します。)XPages:SSJSとJavaを介して文書を保存するときの文書の競合

リード

+0

あなたがのgetDocument(true)を使用して文書を渡すためにしようとすることはできますか?これにより、セーブの競合が発生するのを防ぐことができます。 –

+0

こんにちはMichael。ドキュメントをJavaコードに渡すときにgetDocument(true)を使用すると、残念ながら保存の競合が発生します。私が気づいたことの1つは、SSJSでdocument1.save()の代わりにdocument1.getDocument()。save()を使用すると、競合が発生しないということです。変更を正しく保存するようですが、もう少しテストする必要があります。それをするのはかなり正しいとは思われません.... –

+0

あなたはJavaでの保存をしようとしましたか? –

答えて

1

あなたはJavaで「resolveVariable」を使用することができますNotesXspDocument(JavaではDominoDocumentと呼ばれます)を取得します。その後、SSDでなく、JavaのDominoDocumentオブジェクトで保存することができます。

多くのXPageオープンソースプロジェクトにあるJSFUtilを使用するか、独自のヘルパーメソッドを使用すると、これを実行して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

ありがとう、パー!私はそれを知らなかった。私は現在病気ではありますが、試してみることにします。根底にある問題に対処しているようです。 –

+0

これについて知っておいてよかったです。しかし、これまでのテストでは、SSDSのdocument1.save()ではなく、JavaDocument.save()をJavaコードで最初に呼び出すと、まだ保存競合が発生しています。私は、これを引き起こすために何が起こっているのかを知りたがっています.... –

関連する問題