Parfois, je vois URL JSF est * .jsf, parfois * xhtml et parfois / visages / *. Pourquoi?
-
26-09-2019 - |
Question
Been essayer d'apprendre JSF, et parfois je vois l'URL est *.jsf
et est parfois *.xhtml
ou /faces/*
. Quelqu'un peut-il remplir ma connaissance, s'il vous plaît? Lorsque je crée un JSF en utilisant Facelet, l'extension de fichier est .xhtml
, alors d'où vient l'extension d'URL de .jsf
vient?
La solution
L'extension .jsf
est où le FacesServlet
est au cours de la période JSF 1.2 souvent cartographié dans le web.xml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
L'extension .xhtml
est du fichier Facelets réel que vous avez physiquement placé dans le webcontent de votre webapp, par exemple Webapp/WebContent/page.xhtml
.
Si vous invoquez cette page avec l'extension .jsf
, par exemple http://localhost:8080/webapp/page.jsf
alors le FacesServlet
sera invoqué, recherchez le fichier page.xhtml
et analyser / rendre ses composants JSF. Si le FacesServlet
n'est pas invoqué, le enduser finirait par obtenir le code source XHTML brut (qui peut être vu par clic droit, Afficher la source ).
Parfois, une extension *.faces
ou /faces/*
foldermapping est été utilisés. Mais ce fut de retour dans les JSF 1.0 / 1.1 ans. Vous êtes libre de choisir et d'utiliser ce que la cartographie que vous souhaitez laisser FacesServlet
écouter, même si elle est un *.xyz
rien-dire. La page elle-même doit toujours avoir l'extension .xhtml
, mais cela est configureable par le <context-param>
suivant web.xml
:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xml</param-value>
</context-param>
Cela va changer le FacesServlet
pour localiser instad de page.xml
de (par défaut) page.xhtml
.
Plus récemment, avec JSF / 2.0 Facelets une cartographie *.xhtml
__gVirt_NP_NN_NNPS<__ est été utilisé. Dans JSF / Facelets 1.x il n'a pas été possible d'utiliser la même extension de mappage que le fichier physique. Il en résulterait une boucle infinie. Mais depuis JSF / Facelets 2.0, il est possible et cela vous permet d'appeler la page par http://localhost:8080/webapp/page.xhtml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
De cette façon, vous ne avez pas besoin de configurer certaines restrictions de sécurité pour cacher les fichiers source première pour les cas loin chaque fois que les changements de Enduser par exemple .jsf
dans l'URL à .xhtml
dans la barre d'adresse du navigateur. outillage uniquement (IDEs et plugins) et des ressources d'apprentissage doivent encore rattraper le mouvement préconisé de *.jsf
à *.xhtml
. Selon JSF 2.3, le FacesServlet
sera par défaut sur *.xhtml
trop auto-enregistrés (à côté de /faces/*
, *.faces
et *.jsf
). Ceci est backported à Mojarra 2.2.11.
Voir aussi:
- Peut-on utiliser des expressions régulières dans web.xml modèles URL
- Définir la page d'accueil par défaut via
dans le projet JSF - JSF retourne la page blanche / unparsed avec une source simple / raw XHTML / XML / EL au lieu de sortie HTML rendu
- Quelle est la différence entre la création de pages JSF avec .jsp ou extension xhtml ou .jsf
- Quels fichiers XHTML ai-je besoin de mettre en / WEB-INF et qui ne
- Personnaliser FacesServlet
pour se débarrasser de l'extension .xhtml