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?

Était-ce utile?

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:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top