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