Glassfish server rendert keine Tags

Mr Hankey

Mitglied
Ich benutze Eclipse Indigo für EE Entwickler und als server den Glassfish 3.1.2.
Hatte schon Probleme den Glassfish zu installieren und eine Domäne zu erstellen, weil ich mir erst viel später nochmal ausdrücklich Rechte auf den Installationsordner gegeben hatte obwohl ich Admin bin, was aber die Lösung des Problems darstellte.

Jetzt also ist der Glassfish installiert, in Eclipse alles konfiguriert, Dynamic Web Project erstellt, New->XHTML gemacht, da dann noch in ein Tag xmlns:x="...." zur richtigen Adresse für das Faces Zeuch und dann ein bisschen was in der Datei geschrieben (hier ist alles korrekt, es kommt auch die Autovervollständigung).

Doch auf dem Server wird nur plain Text ausgegeben. Auch keine Tags, die sind jedoch im Quellcode zu sehen (<h:.....>). Die sollten ja eigentlich durch Formularfelder etc. ersetzt werden. Ich habe schon seit gestern nach Lösungen gesucht aber wirklich keine gefunden. Kann mir hier bitte jemand helfen? Ich will endlich lernen :toll:
 
War ja klar, dass es jetzt klappt. Ich arbeite zur Zeit in Tutorial durch, indem mir gesagt wurde, dass ich für Dynamic Web Projects keine Deployment Descriptors brauche. Habe dann aber ein Projekt mal mit DD angelegt, darin eine welcome page von index.html auf index.xhtml geändert damit ich direkt dahin komme. Dann habe ich in der web.xml die Zeilen


HTML:
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>


auf

HTML:
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>

abgeändert. Denk mal das url-pattern sagt, dass Dateien mit dieser Endung JSF Tags enthalten und die dann gerendert werden sollen, oder? Und warum könnte man sagen, dass man keinen DD mehr braucht? Hatte vorher nur eine sun-web.xml, was bringt die Datei?
 
Zuletzt bearbeitet:
Ganz ohne den Eintrag im Deployment Descriptor geht es nicht, das ist ja die absolut zentrale Konfiguration und es gibt ja auch zwei Ansätze von JSF: Geht man nach dem Ordner (/faces/*) oder nach den Dateiendungen (*.xhtml). Das muss man irgendwo konfigurieren. Aber es ist nur einmal zu tun. Mein erstes Mal mit JSF war auch so, ich sah nur HTML und Tags, nichts hat der Servlet-Container gemacht, bis die Einstellung in web.xml richtig war.

Früher brauchte man einen Deployment Descriptor für ganz andere Dinge, wie neue Servlets anmelden usw. Mit Servlet 3.0 kann man das über Annotationen regeln und web.xml wird schmal.
 
Das url-pattern gibt eigentlich nur an, wie deine jsf-Seiten von außen angesprochen werden können. Die JSF-Seiten selbst sollten immer im xhtml-Format sein. Vermutlich hast du zuvor tatsächlich einen Ordner faces angelegt und dort deine index.xhtml hineingesteckt? Dann wäre der Pfad nach außen hin von der Form [c]/pfad/zur/app/faces/faces/index.xhtml[/c] gewesen. Liegt die index-Seite jedoch auf unterster Ebene, dann wäre [c]/pfad/zur/app//faces/index.xhtml[/c] richtig.

Du kannst dein URL-Patter auch zB so abändern:
HTML:
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.meineendung</url-pattern>
  </servlet-mapping>

dann wird deine Index-Seite über [c]/pfad/zur/app//faces/index.meineendung[/c] angesprochen.

Um kenntlich zu machen, dass es sich aber um JSF-Seiten handelt, benutzt man häufig#

HTML:
  <url-pattern>*.jsf</url-pattern>
oder
HTML:
  <url-pattern>/faces/*</url-pattern>
 
Zuletzt bearbeitet:
Gut, danke für die Antworten.

Habe zwar keinen Ordner faces erstellt, aber das URL Pattern muss wohl trotzdem davor, auch wenn sich die Dateien im Hauptordner befinden.

Wenn man jedoch nur eine Dateiendung, also *.xhtml z.B., ist es egal, in welchem Ordner Die Datei sich befindet, ihre Tags werden gerendert. Man muss jedoch den Ordnernamen im Pfad angeben.
 

Zurück
Oben