2012-03-16 5 views
3

保存ボタンは、ロジックを持つSSJSを使用します。私は、データソースを保存したいので、私はスクリプトの動作データソースのsave()メソッドがquerySave/postSaveイベントを起動しません

document1.save();

を使用していますが、querySave/postSaveコードが実行されません。

単純なアクションを使用し、「スクリプトの実行」、「ドキュメントの保存(単純なアクション)」、および「スクリプトの実行」(単に「ナビゲーション」文字列を返す)のボタンイベントをブロックする方法があります。

SSJSとqS/pSイベントでデータソースを保存することはできますか?

答えて

15

このSSJSコードを試してください。

var dsName = "document1.DATASOURCE"; 
var app = facesContext.getApplication(); 
var ds = app.getVariableResolver().resolveVariable(facesContext, dsName); 
ds.save(facesContext, true); 

変数にdsNameは「.DATASOURCE」に続いて、あなたのデータソースの名前が含まれています。それを使用する。現在のドキュメントでは、 "currentDocument.DATASOURCE"に変更する必要があります。これは

スヴェン

+0

ありがとう、期待どおりに動作します:-) –

+1

@Sven:sucessfullを保存するにはどうしたらいいですか?使用していた古いコードでは、 var res = document1.save(); if(res){ var url = view.getPageName()+ "?action = openDocument&documentId =" + document1.getNoteID(); context.redirectToPage(url); } 問題がある場合はリダイレクトを実行せず、エラーメッセージを表示します –

+0

* var ret = ds.save(facesContext、true); * saveメソッドには戻り値があります。 、そうでなければfalse。これは、* querySave * -eventがfalseを返さなかったことを意味します。 –

0

スヴェンあなたのコードとcurrentDocument.save(の違いは何である)ことができます

希望はquerysaveとpostsave以外の何かが起こっているのですか?

+2

違いは、使用されるオブジェクトのタイプです。ドキュメントデータソースを保存すると、NotesXspDocumentタイプのオブジェクトのメソッド「保存」が呼び出されます。上記の説明があれば、 –

+2

com.ibm.xsp.model.domino.DominoDocumentDataというオブジェクトを受け取ります。このオブジェクトには別の保存方法があります。最初のオブジェクトタイプはバックエンドのNotesDocumentのようなもので、2番目のオブジェクトはNotesUIDocumentクラスのようなものです。 –