Einfach genial, das bedarf keines weiteren Kommentars!
Es freut mich sehr, dass ich auf dem kommenden Herbstcampus 2010 einen Vortrag halten darf. Ich werde die drei bekannten AJAX-JSF Frameworks PrimeFaces, RichFaces und IceFaces unter die Lupe nehmen und vergleichen.
Der Vortrag „Der lachende Dritte? – PrimeFaces im Vergleich zu RichFaces und IceFaces“ findet am Montag, 13. 9., 11:20 – 12:30 Uhr statt.
Gespannt bin ich auch auf das umfangreiche Konferenzprogramm mit zahlreichen interessanten Vorträgen und Referenten. Ausführliche Informationen zur Konferenz findet man unter http://www.herbstcampus.de/hc10/index.html
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 …“
Heute schreibe ich hier einen sehr nützlichen Shell-Einzeiler mit Python auf:
$ python -m SimpleHTTPServer
Dieser Befehl startet einen Webserver, der das aktuelle Verzeichnis ins Netz bringt. Standardmäßig ist der Server auf Port 8000 erreichbar (einen alternativen Port gibt man einfach hinten dran: python -m SimpleHTTPServer 8888). Hat man den obigen Befehl gestartet (die Shell gibt nun das Zugriffsprotokoll aus), so kann man im Browser mit Aufruf von
http://localhost:8000 (bzw. http://rechnername:8000)
das Ergebnis betrachten. Sollte das Verzeichnis eine index.html bzw. index.htm enthalten, so wird diese als Webseite angezeigt, sonst werden die Ordner und Dateien des Verzeichnisses aufgelistet. In die Ordner kann man reinwechseln, oberste Ebene bleibt aber das Verzeichnis aus dem gestartet wurde.
Die möglichen Anwendungsfälle, die sich einem da im Alltag auftun sind unaufzählbar und es bleibt dem Leser überlassen, seine kreativen Einsatzzwecke zu entdecken und gerne in den Kommentaren kund zu tun.