Parfois, je vois que L'URL JSF est *.jsf, parfois *.xhtml et parfois /faces/*. Pourquoi?

été essayer d'apprendre le JSF, et parfois je vois l'URL est *.jsf et parfois est *.xhtml ou /faces/* . Est-ce que quelqu'un peut remplir mes connaissances, s'il vous plaît? Quand je crée un JSF en utilisant Facelet , l'extension du fichier est .xhtml , alors d'où vient l'extension de L'URL .jsf ?

54
demandé sur BalusC 2010-06-09 21:48:27

1 réponses

l'extension .jsf correspond à l'extension FacesServlet pendant la période JSF 1.2 souvent cartographiée dans le web.xml .

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

l'extension .xhtml est du réel le fichier Facelets 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é, localisez le fichier page.xhtml et analysez/restituez ses composants JSF. Si le FacesServlet n'est pas invoqué, alors l'utilisateur final obtiendra le code source XHTML brut (qui peut être vu par rightclick, View Source ).

on a parfois utilisé une extension ou un foldermapping *.faces . Mais c'était de retour dans les âges JSF 1.0/1.1. Vous êtes libre de choisir et d'utiliser n'importe quel mapping que vous souhaitez laisser FacesServlet écouter, même si c'est un *.xyz qui ne dit rien . La page elle-même devrait toujours avoir l'extension .xhtml , mais celle-ci est configurable par <context-param> dans web.xml :

<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xml</param-value>
</context-param>

ceci changera le FacesServlet pour localiser page.xml instad of (default) page.xhtml .

plus récemment, avec JSF/Facelets 2.0, une cartographie *.xhtml a été utilisée. Dans JSF / Facelets 1.x il n'a pas été possible d'utiliser la même cartographie extension en tant que 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 n'avez pas besoin de configurer certaines restrictions de sécurité pour cacher les fichiers sources bruts pour 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 (IDEs et plugins) et les ressources d'apprentissage ont encore besoin d'être vers le haut le passage préconisé de *.jsf à *.xhtml . Conformément à la norme JSF 2.3, le FacesServlet sera automatiquement enregistré sur *.xhtml aussi (à côté de /faces/* , *.faces et *.jsf ). C'est rétroporté à Mojarra 2.2.11.

voir aussi:

96
répondu BalusC 2018-04-19 06:45:28