2011-09-09 8 views
3

Je commence à explorer JSF 2 facelet et je voudrais tester cela dans un projet simple. J'ai juste quelques questions concernant la structure du fichier dans JSF 2. Lorsque j'utilisais Spring, j'utilise pour mettre toutes mes pages sous WEB-INF afin qu'elles ne soient pas accessibles au navigateur.JSF 2 Accès aux fichiers Facelet

Je remarque dans JSF 2, vous devriez mettre votre * .xhtml en dehors de WEB-INF et permettre l'accès à eux par le Servlet Faces. Question: cela signifie-t-il que toutes les applications d'entreprise qui utilisent JSF mettent toujours une contrainte de sécurité dans leur fichier web.xml? ?

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>XHTML files</web-resource-name> 
     <url-pattern>*.xhtml</url-pattern> 
    </web-resource-collection> 
    <auth-constraint /> 
</security-constraint> 

Ou ils utilisent une sorte de filtre, qui emprisonne toute demande entrante et rejeter la demande qui a * .xhtml?

Est-ce que ma compréhension est correcte et si oui laquelle est la plus susceptible d'être utilisée?

Merci

Répondre

1

Une troisième alternative dans JSF 2.x est de cartographier la FacesServlet tout droit sur *.xhtml au lieu de *.jsf ou autre. De cette façon, vous n'avez pas besoin de bricoler avec des contraintes de sécurité ou des filtres pour empêcher les utilisateurs finaux d'accéder directement aux fichiers *.xhtml. Il a le seul inconvénient que vous ne pouvez pas servir des fichiers XHTML "plain vanilla" sans invoquer le FacesServlet, mais ce serait à son tour déjà pas beaucoup de sens, parce que ces fichiers devraient techniquement avoir l'extension *.html.

Veuillez noter que cela ne fonctionne pas dans l'ancien JSF 1.x. Le FacesServlet s'exécuterait dans une boucle infinie en invoquant encore et encore.

+0

est-ce que cela confirme ma compréhension des deux approches que j'ai mentionnées plus haut? Merci aussi pour cette troisième approche parce que je n'ai jamais pensé ou lu à ce sujet? –

+0

Oui, votre compréhension était correcte. C'était la façon dont ils ont fait pour JSF 1.x. Cela fonctionnera également pour JSF 2.x, mais ce n'est pas nécessaire si vous ne faites que mapper le 'FacesServlet' sur la même extension de vue. – BalusC

+0

Merci d'avoir toujours été utile! (J'ai oublié combien de fois, j'ai dit merci à vous ...) =) –