Beim Übergeben von Daten an ein benutzerdefiniertes Steuerelement habe ich immer das CompositeData-Objekt verwendet, um auf diese Daten im Steuerelement zuzugreifen. Dies funktioniert einwandfrei, mit Ausnahme des beforeRenderResponse-Ereignisses des benutzerdefinierten Steuerelements. Nehmen Sie diesen Code als Beispiel:compositeData des benutzerdefinierten Steuerelements ist im beforeRenderResponse-Ereignis nicht definiert
<xp:this.afterPageLoad><![CDATA[#{javascript:getComponent("lbl0").setValue(typeof(compositeData));}]]></xp:this.afterPageLoad>
<xp:this.beforeRenderResponse><![CDATA[#{javascript:getComponent("lbl1").setValue(typeof(compositeData));}]]></xp:this.beforeRenderResponse>
<xp:label value="" id="lbl0"/>
<xp:label value="" id="lbl1"/>
Im afterPageLoad Fall die typeof des compositeData ist "com.ibm.xsp.binding.PropertyMap". Im Ereignis beforeRenderResponse gibt derselbe Typ jedoch "undefined" zurück.
Wie kann ich auf die compositeData im beforeRenderResponse-Ereignis zugreifen?
Versuchen Sie die beforeRenderResponse auf "page load" zu berechnen, indem Sie $ anstelle von # verwenden ( xp: this.beforeRenderResponse>) –
Wenn ich das Ereignis beim Laden der Seite berechne, erhalte ich einen Fehler: "getComponent() ist null". Wie auch immer, Computing nur beim Laden der Seite ist in meinem Fall nicht wirklich eine Option, weil ich das benutzerdefinierte Steuerelement teilweise aktualisieren möchte, wenn sich seine Parameter ändern. –
Basierend auf meiner Beobachtung passiert dies nicht nur für compositeData, sondern auch für currentDocument und andere Datenquellen, die in einer xpage definiert sind. – rfk