Été essayer d'apprendre JSF, et parfois je vois que l'URL est *.jsf
et est parfois *.xhtml
ou /faces/*
. Quelqu'un peut-il remplir mes connaissances, s'il vous plaît? Lorsque je crée un JSF à l'aide de Facelet, l'extension de fichier est .xhtml
, alors d'où vient .jsf
L'extension URL provient-elle?
Le .jsf
l'extension est l'endroit où se trouve FacesServlet
pendant la période JSF 1.2 souvent mappée dans web.xml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Le .xhtml
l'extension correspond au fichier Facelets réel tel que vous l'avez physiquement placé dans le contenu Web de votre application Web, par exemple Webapp/WebContent/page.xhtml
.
Si vous appelez cette page avec le .jsf
extension, par exemple http://localhost:8080/webapp/page.jsf
puis le FacesServlet
sera invoqué, localisez le page.xhtml
fichier et analyser/rendre ses composants JSF. Si le FacesServlet
n'est pas invoqué, l'utilisateur final finira par obtenir le code source XHTML brut (qui peut être vu par clic droit, Voir la source).
Parfois, un *.faces
extension ou /faces/*
la carte de pliage a été utilisée. Mais c'était de retour dans les âges JSF 1.0/1.1. Vous êtes libre de choisir et d'utiliser le mappage que vous souhaitez laisser FacesServlet
écouter, même s'il ne s'agit pas de dire *.xyz
. La page elle-même doit toujours avoir le .xhtml
extension, mais elle est configurable par le <context-param>
dans web.xml
:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xml</param-value>
</context-param>
Cela changera le FacesServlet
pour localiser page.xml
au lieu de (par défaut) page.xhtml
.
Plus récemment, avec JSF/Facelets 2.0 a *.xhtml
le mappage a été utilisé. Dans JSF/Facelets 1.x, il n'était pas 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 c'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 n'avez pas besoin de configurer certaines restrictions de sécurité pour masquer les fichiers source bruts dans les cas où l'utilisateur final change par exemple .jsf
dans l'URL de .xhtml
dans la barre d'adresse du navigateur. Seuls les outils (IDE et plugins) et les ressources d'apprentissage doivent encore rattraper le mouvement préconisé de *.jsf
à *.xhtml
. Selon JSF 2.3, le FacesServlet
sera par défaut enregistré automatiquement sur *.xhtml
aussi (à côté de /faces/*
, *.faces
et *.jsf
). Ceci est rétroporté vers Mojarra 2.2.11.