Hallo, ich versuche verzweifelt herauszufinden, wie man in XPages-Events richtig auf das aktuelle Dokument zugreifen kann.
Hintergrund: Ich möchte im Query/PostSave noch ein paar Änderungen durchführen indem ich eine zentrale Methode aufrufe, ebenso im computeDocument
<xp:dominoDocument var="document1"
...
querySaveDocument="#{javascript:myQuerySaveDocument(document1);}"
postSaveDocument="#{javascript:myPostSaveDocument(document1);}"
computeDocument="#{javascript: print(document1); }"
...>
</xp:dominoDocument>
während query/postsave inzwischen klappt, indem ich auf "document1" zugreife (wobei ich das auch nicht unbedingt sauber finde, eine Referenz wie "this" wäre mir hier lieben), scheitere ich an "computeDocument"
ich schaffe es einfach nicht, hier einen vernünftigen Kontext zur EventSource herzustellen.
Ich habe schon probiert: "currentDocument", "this", "document1".
Ich bekomme immer den Fehler:
com.ibm.xsp.exception.EvaluationExceptionEx: Error while executing JavaScript action expression
Error while executing JavaScript action expression
Script interpreter error, line=1, col=8: [ReferenceError] 'document1' not found
JavaScript code 1: print(document1);
Kann mir wer sagen, wie ich die Events richtig verwende... momentan finde ich das "computeDocument"-Event ziemlich nutzlos.
Gruß
Roland
Das computeDocument-Event wird bei jeder Aktion einer Datasource ausgeführt, auch bevor die Datasource initialisiert wurde.
Daher kann in diesem Moment nicht auf die Datasource zugegriffen werden.
Ein Workaround ist, document1 auf mit try/catch abzufangen:
try{
print( document1 );
}catch(e){}
Dann kann das Event auch benutzt werden.