2012-03-16 1 views
3

Mon bouton de sauvegarde utilise SSJS avec une certaine logique. Je veux sauver datasource, donc j'utiliseLa méthode save() sur la source de données ne déclenche pas les événements querySave/postSave

document1.save();

fonctionne script, mais le code querysave/de postSave n'est pas exécutée. Seule solution consiste à utiliser une simple action et à diviser l'événement de bouton en blocs pour "exécuter le script", "Enregistrer le document (action simple)" et "exécuter le script" (juste pour retourner la chaîne "navigation").

Est-il possible d'enregistrer une source de données dans les événements SSJS et de déclencher des événements qS/pS?

Répondre

15

s'il vous plaît essayer ce code SSJS:

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

La dsName variable contient le nom de votre source de données suivi par ".DataSource". Pour l'utiliser f.e. avec le document actuel, vous devez changer pour "currentDocument.DATASOURCE".

Hope this helps

Sven

+0

merci, fonctionne comme prévu :-) –

+1

@Sven: Comment puis-je contrôler si sauver sucessfull? Dans mon ancien code, j'ai utilisé var res = document1.save(); if (res) { var URL = view.getPageName() + "? Action = openDocument & documentId =" + document1.getNoteID(); context.redirectToPage (url); } Donc, s'il y a un problème je n'exécute pas la redirection et je montre le message d'erreur –

+0

* var ret = ds.save (facesContext, true); * La méthode save a une valeur de retour: true si le document a été sauvé , sinon faux. Cela signifie que * querySave * -event n'a pas retourné false. –

0

Sven quelle est la différence entre votre code et currentDocument.save() est quelque chose qui se passe d'autre que querysave et postSave?

+2

La différence est le type d'objet qui sera utilisé: Si vous enregistrez une source de données de document, la méthode "enregistrer" d'un objet de type NotesXspDocument est appelée. Si vous faites quoi, si vous avez décrit ci-dessus, vous recevrez un objet de type –

+2

com.ibm.xsp.model.domino.DominoDocumentData; cet objet a une autre méthode d'enregistrement. Le premier type d'objet est comme un NotesDocument backend, le second objet est comme la classe NotesUIDocument. –

Questions connexes