Zum Inhalt

ADF 11: JavaScript Fehler beim Tabwechsel

In einem aktuellen Projekt arbeite ich mit den ADF Komponenten von Oracle. Hierbei kommt u.a. af:panelTabbed zum Einsatz, um Tabs für verschiedene Masken zu.

Nun kam es jedoch bei einem Tab-Wechsel zu folgenden Fehler:

Fehlermeldung im Internet Explorer 8 - 'component' ist Null oder kein Objekt

Dieser ist dann reproduzierbar, wenn auf dem vorherigen Tab eine Info-Meldung erzeugt wurde. Meine erste Vermutung war, dass das JavaScript von ADF versucht noch einmal auf die Client-Komponente zuzugreifen. Diese scheint nach dem Tab-Wechsel jedoch nicht mehr vorhanden zu sein. Mein erster Ansatz war es die Nachrichten per Java zurückzusetzen z.B. mittels der af:messages Komponente und Data-Binding). Dies war jedoch erfolglos. Beim googeln bin ich dann auf folgende JavaScript-Funktion von ADF gestoßen: AdfPage.PAGE.clearAllMessages();.Diese direkt mit den Entwicklerwerkzeugen des IE8 getestet versprach dieLösung des Problems.

Die Nachrichten auf dem Tab vor dem Wechsel waren wie erwartet ausgeblendet. Danach musste ich also nur noch diese Funktion in den Tab-Wechsel einbauen. Hierfür gibt es von ADF die sogenannte af:clientListener Komponente, welche innerhalb von af:showDetailItem  definiert wird.

Die Komponente verweist dann mittels den Attributen type= "disclosure" und method= "clearAllMessages" auf eine eingebundene JavaScript-Funktion. Beachte: hier werden nicht – wie sonst in JavaScript üblich – die Klammern für den Methodenaufruf angegeben!

Am Ende sieht das Ganze dann folgendermaßen aus:

<af:showDetailItem>
  <af:clientListener method="clearAllMessages" type="disclosure"/>
</af:showDetailItem>

 

function clearAllMessages(){
  AdfPage.PAGE.clearAllMessages();
}
Published inTechnik

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*