Autor Thema: in Xpage-Event computeDocument auf das aktuelle Dokument zugreifen  (Gelesen 2848 mal)

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
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

Code
<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
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
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:

Code
try{
	print( document1 );
}catch(e){}

Dann kann das Event auch benutzt werden.

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Hallo Sven,

danke für den Tipp, das bringt mich dann mal einen Schritt weiter.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz