2011-01-06 5 views
20

Ich habe eine einfache JSF2 App mit Facelets. Mein web.xml wie folgt festgelegt: -Wie setze ich JSF2 <welcome-file> mit Faces-Servlet-Mapping?

<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
<url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 

Ich mag die App auf die Startseite auf dem Standard der /pages/login.xhtml sind. Ich kann nicht scheinen, die Einstellung für die Begrüßungsdatei zu bekommen, wenn ich zum Kontextstammverzeichnis im Browser gehe.

Meine web.xml willkommen Einstellung ist wie folgt: -

<welcome-file-list> 
<welcome-file>/pages/login.jsf</welcome-file> 
</welcome-file-list> 

Wie erzwinge ich die Welcome-Seite gehe die Login-Seite und sicherzustellen, dass sie die Gesichter Servlet durchläuft?

Wenn ich die im Anschluss an der Seite angezeigt verwenden, aber es ist nicht durch die Gesichter Servlet und so steht Komponenten werden nicht gerendert gegangen: -

<welcome-file-list> 
<welcome-file>pages/login.xhtml</welcome-file> 
</welcome-file-list> 

Jede geschätzte Hilfe!

Antwort

22

Sie müssen eine leere login.jsf-Datei neben Ihrer login.xhtml-Datei erstellen. Aus irgendeinem Grund wird dieser Hack benötigt, um den Servlet-Container zu glauben, dass Ihre Willkommensdatei existiert.

Hinweis: Die gediente Antwort ist immer noch die JSF-Antwort, die Ihre login.xhtml-Datei verwendet, nicht die leere Datei login.jsf, die Sie erstellen.

+3

Danke für die Änderungen BalusC - Ich beantwortete die Frage, die ich erwartete, nicht die Frage, die ich las! –

+0

Das funktioniert! Vielen Dank für die Antwort (und die Änderungen!) – oidsman

+0

Danke. Funktioniert super. –

1

Zusätzliche Informationen zur ursprünglichen Lösung.

Dies ist nur eine Rückwärtskompatibilität für Servlet-Container vor Version 3. Wenn Sie beispielsweise unter Glassfish 3.1 oder Tomcat 7 ausgeführt werden, ist es nicht länger erforderlich, eine leere Datei wie diese zu haben. Ich führte Tests mit Tomcat 6 und Tomcat 7 durch. In der Vergangenheit hatte ich Tests mit Glassfish durchgeführt und angenommen, dass ein Tomcat 6 Problem auftrat, da wir unsere Software derzeit in Tomcat 6 betreiben und es sich nicht um einen 3.0 Servlet Container handelt. Ich hatte eine JSP-Seite mit Redirect verwendet, aber nachdem ich komplett zu den Facelets gewechselt hatte, war es mir unangenehm, eine über die JSP-Seite zu haben. Dies ist eine großartige Lösung für die nahe Zukunft, bis wir in einem 3.0 Servlet-Container laufen. Der eigentliche Grund dafür ist, dass mit dem WEB.XML-Eintrag alles gemacht wird, um die Existenz der Datei zu überprüfen. Die eigentliche Arbeit wird in JSF verarbeitet, da sie die Anfrage auf die Faces-Seite abfängt und somit nie auf diese leere Seite trifft.