Um SSJS Code vor dem „BeforePageLoad„-Event auszuführen, kann der Code einfach in eine DataContext-Variable gepackt werden. Die Berechnung der DataContext-Variable sollte auf „ComputeOnPageLoad“ gesetzt sein, dann wird der Code auch nur einmal ausgeführt. Als Rückgabewert sollte null verwendet werden, dann verschwindet Sie aus dem Speicher und die Variable ist auch nicht via SSJS referenzierbar.
Natürlich bleiben die im SSJS-Code definierten Variablen Ereignisübergreifend erhalten. Hier ein Beispiel, indem die Variable testVar vor dem „BeforePageLoad„-Event befüllt und während des Events ausgewertet wird:
<?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <xp:this.beforePageLoad> <![CDATA[#{javascript: print("Before PageLoad: " + testVar )}]]> </xp:this.beforePageLoad> <xp:this.dataContexts> <xp:dataContext var="dummy"> <xp:this.value> <![CDATA[${javascript:print("Data Context!"); testVar = "Data Context!" return null}]]> </xp:this.value> </xp:dataContext> </xp:this.dataContexts> </xp:view>
Interessante Anwendung eines Data Contexts. Hast Du da noch mehr Verwendungszwecke?
Will the result of the value end upp in the datacontext variable?
If so where is this datastored (app/session/view/req scope)?
The result will not end up in a datacontext variable,it is not scoped. The result is just available for all SSJS Code of the current request.