Mal wieder so eine kleine Sache, an der man unnötig hängen bleibt und auf deren Lösung man ohne googeln kaum kommen kann.
Ausgangsstellung: Ich hatte in meiner JSF-Oberfläche mit RichFaces einen modalen Dialog eingebaut, der unter anderem einen Editor enthalten soll. Eigentlich ganz easy, nichts besonderes. Der Code sah vereinfacht und gekürzt in etwa so aus:
1 2 3 4 5 6 7 8 9 10 | <rich:modalPanel id="editpanel" autosized="true"> <h:form> ... (andere Komponenten) ... <rich:editor id="editor" width="400" height="100" value="#{myBean.dialogBeschreibung}" /> <a4j:commandButton value="Speichern" action="#{myBean.dialogSpeichern}" oncomplete="#{rich:component('editpanel')}.hide();" reRender="treepanel" /> <a4j:commandButton value="Abbrechen" onclick="#{rich:component('editpanel')}.hide();return false;" /> </h:form> </rich:modalPanel> |
Eigentlich alles ok, oder? Also gut, ‚mvn tomcat:redeploy‘ … ein bisschen einwirken lassen … Firefox auf, testen. Der Dialog springt sofort auf, aber der Editor ist tot, nicht mal den Cursor kriegt man zum blinken. Und auch der ‚Speichern‘-Knopf zeigt keine Reaktion.
Die Lösung (besser: den Workaround) liefert JBoss.org Issue RF-7477 bzw RF-5268: Im modalPanel ist domElementAttachment=“parent“ zu setzen. Zeile 1 von oben sieht dann also so aus:
<rich:modalPanel id="editpanel" domElementAttachment="parent" autosized="true"> |
Was lernt man daraus? Keine Ahnung, wohl das was wir schon oft gelernt haben: „Kaum macht mans richtig, schon gehts …“