A volte vedo JSF URL è * JSF, a volte * .xhtml e qualche volta / volti / *. Perché?
-
26-09-2019 - |
Domanda
prova Conosci imparare JSF, e qualche volta vedo l'URL è *.jsf
ed a volte è *.xhtml
o /faces/*
. Qualcuno può riempire la mia conoscenza, per favore? Quando creo un JSF utilizzando facelet, l'estensione del file è .xhtml
, quindi da dove l'estensione .jsf
URL viene?
Soluzione
L'estensione .jsf
è dove il FacesServlet
è durante il periodo JSF 1.2 spesso mappata nel web.xml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
L'estensione .xhtml
è del attuale di file Facelets come avete fisicamente collocato nel webcontent della vostra webapp, per esempio Webapp/WebContent/page.xhtml
.
Se si richiama questa pagina con l'estensione .jsf
, per esempio http://localhost:8080/webapp/page.jsf
allora la FacesServlet
verrà invocato, individuare il file e page.xhtml
parse / rende i suoi componenti JSF. Se il FacesServlet
non viene richiamato, quindi l'utente finale si finisce per ottenere il codice sorgente XHTML grezzo (che può essere visto da rightclick, Visualizza origine ).
è stato utilizzato A volte un'estensione *.faces
o /faces/*
foldermapping. Ma questo era dalla parte posteriore nelle JSF 1.0 / 1.1 età. Sei libero di scegliere e usare qualsiasi mappatura vuoi lasciare FacesServlet
ascolto su, anche se si tratta di un *.xyz
nulla-dire. La pagina di vero e proprio deve sempre avere l'estensione .xhtml
, ma questo è configureable dal seguente <context-param>
in web.xml
:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xml</param-value>
</context-param>
Questo cambierà il FacesServlet
per individuare page.xml
instad di (default) page.xhtml
.
Più di recente, con JSF / Facelets 2.0 è stata utilizzata una mappatura *.xhtml
. In JSF / Facelets 1.x non è stato possibile utilizzare la stessa estensione di mapping del file fisico. Essa si tradurrebbe in un ciclo infinito. Ma dal momento che JSF / Facelets 2.0 è possibile e questo consente di chiamare la pagina http://localhost:8080/webapp/page.xhtml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
In questo modo non è necessario configurare alcune restrizioni di sicurezza per nascondere i file di origine prima via per casi ogni volta che l'utente finale cambia per esempio .jsf
nell'URL per .xhtml
nella barra degli indirizzi del browser. Solo utensili (IDE e plugin) e risorse di apprendimento ancora bisogno di recuperare il movimento sostenuto da *.jsf
a *.xhtml
. Come per JSF 2.3, il FacesServlet
per impostazione predefinita essere autoregistered su *.xhtml
troppo (accanto al /faces/*
, *.faces
e *.jsf
). Questo è backported a Mojarra 2.2.11.
Vedi anche:
- possiamo usare le espressioni regolari in web.xml modelli di URL?
- Imposta home page predefinita tramite
nel progetto JSF - rendimenti JSF vuota / Pagina non analizzata con XHTML / XML / fonte plain / raw EL invece di output HTML reso
- Qual è la differenza tra la creazione di pagine JSF con .jsp o estensione .xhtml o JSF
- I file che fanno XHTML ho bisogno di mettere in / WEB-INF e quali no?
- Personalizza FacesServlet
a sbarazzarsi di estensione .xhtml