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> |
<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"> |
<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 …“