Dieses Blog durchsuchen

Dienstag, 30. Dezember 2014

Debugging Ausgabe bei Richfaces erhöhen

In den letzten Monaten war ich mit der Migration einer Anwendung von Richfaces 3.3 auf Richfaces 4.5 beschäftigt. Diese Migration war dringend notwendig, da neuere Browser die alte Richfaces Version nicht mehr unterstützt haben (z. B. gingen keine Klappboxen mehr auf oder Ajax-Requests liefen ins Leere) Die Migration hat mich dann einiges an Nerven gekostet, vor allem deshalb, weil sich die Richfaces-Entwickler dazu entschlossen haben, sämtliche CSS-Benennungen zu ändern und auch viele Tag-Namen und Attribute zum Teil völlig unnötigerweise abzuändern. Dies führte dazu, dass nach Umstellung auf die neue Richfaces Version zunächst einmal nichts mehr funktionierte und auch das Design kaum noch wiederzuerkennen war.

Im Rahmen dieser Migration gab es auch immer wieder den Fall, dass eine in der Managed-Bean definierte Action-Methode nicht aufgerufen wurde. Hier war ich dann komplett ratlos, da es weder auf dem Server (JBoss-Log) noch auf dem Client (Java-Script Konsole) eine Fehlermeldung oder Warnung gab. Hier zeigt sich sehr schön der Nachteil einer komplexen Komponentenbibliothek: Es ist im Prinzip eine Black-Box und wenn die Standard-Komponenten nicht funktionieren, hat man erstmal Pech gehabt. Ein Kollege gab mir dann den Tipp, wie das Logging (sehr schön zu sehen in der Firebug-Konsole) auf Debug-Level erhöht werden kann, um Fehler leichter identifizieren zu können:

<a4j:log mode="console" level="DEBUG" />

Platziert man dieses Tag auf die XHTML-Seite, werden detaillierte Informationen in die Browser-Console gegeben, z. B. wie folgt:

RichFaces: New request added to queue. Queue requestGroupingId changed to Form:subviewTable:infoTable:6:checkbox
RichFaces: Queue will wait 0ms before submit
RichFaces: richfaces.queue: will submit request NOW
RichFaces: Received 'begin' event from <input id=form:subviewTable:infoTable:6:checkbox class=rowCheckbox ...>
POST http://localhost:8080/app/views/shortInfo/shortInfo.jsf
200 OK
RichFaces: Received 'beforedomupdate' event from <input id=form:subviewTable:InfoTable:6:checkbox class=rowCheckbox ...>
RichFaces: [object Object]
RichFaces: [object Object]
RichFaces: richfaces.queue: ajax submit successfull
RichFaces: richfaces.queue: Nothing to submit
RichFaces: Received 'success' event from <input id=form:subviewTable:infoTable:6:checkbox class=rowCheckbox ...>
RichFaces: Received 'complete' event from <input id=form:subviewTable:infoTable:6:checkbox class=eventRowCheckbox ...> 


Mit Hilfe dieser Ausgabe lässt sich besser erkennen, was RichFaces Java-Script-seitig tut und wo Probleme (z.B. beim nicht-Aufruf einer Action-Methode) herrühren können.
Weitere Informationen zum Thema Debugging gibt es hier:


https://github.com/richfaces/richfaces/wiki/Debugging-RichFaces