2011-01-06 17 views
20

Ho una semplice app JSF2 che utilizza Facelets. Il mio web.xml è impostato come segue: -Come impostare JSF2 <file di benvenuto> con mappatura servlet facce?

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

voglio impostare l'applicazione di default per la pagina di benvenuto che è /pages/login.xhtml. Non riesco a ottenere l'impostazione del file di benvenuto per raccogliere questo quando si accede alla root di contesto nel browser.

mio web.xml impostazione di benvenuto è la seguente: -

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

Come forzo l'accoglienza pagine goto la pagina di login e assicurarsi che passa attraverso le facce servlet?

Se uso i seguenti viene visualizzata la pagina, ma non è andato attraverso i volti servlet e così visi componenti non sono resi: -

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

Qualsiasi aiuto apprezzato!

risposta

22

È necessario creare un file login.jsf vuoto, adiacente al file login.xhtml. Per qualche ragione questo trucco è necessario per ingannare il contenitore servlet in modo che il file di benvenuto esista.

Nota: la risposta fornita sarà comunque la risposta JSF utilizzando il file login.xhtml, non il file login.jsf vuoto creato.

+3

Grazie per le modifiche BalusC - Ho risposto alla domanda che mi aspettavo, non alla domanda che stavo leggendo! –

+0

Questo funziona! Mille grazie per la risposta (e le modifiche!) – oidsman

+0

Grazie. Funziona alla grande. –

1

Ulteriori informazioni sulla soluzione originale.

Questa è solo una necessità di compatibilità all'indietro per i contenitori servlet precedenti alla versione 3. Una volta in esecuzione in Glassfish 3.1 o Tomcat 7, ad esempio, non è più necessario disporre di un file vuoto come questo. Ho eseguito test per verificare utilizzando Tomcat 6 e Tomcat 7. In passato avevo eseguito test con Glassfish e presumevo che fosse in gioco un problema di Tomcat 6 poiché eseguiamo il nostro software in Tomcat 6 al momento attuale e non è un contenitore di servlet 3.0. Avevo usato una pagina JSP con reindirizzamento ma dopo essermi spostato completamente su facelets non mi piaceva avere una sinistra sulla pagina JSP. Questa è un'ottima soluzione per il breve termine fino a quando non stiamo correndo in un contenitore di servlet 3.0. La vera ragione per cui funziona è che tutto ciò che viene fatto con la voce WEB.XML è un controllo dell'esistenza del file. Il vero lavoro viene gestito da JSF mentre cattura la richiesta nella pagina dei volti, quindi non colpisce mai quella pagina vuota per niente.

Problemi correlati