Fichiers JSF dans le répertoire WEB-INF, comment y accéder?
Je veux mettre mon JSF 2.0 xhtml fichiers sous WEB-INF\jsf. Comment puis-je y accéder? Je sais que quoi que ce soit à l'intérieur de WEB-INF n'est pas exposé à l'extérieur, j'ai donc besoin d'un contrôleur pour me diriger vers le correspondant JSP, droit? (C'est aussi le modèle 2 modèle de l'iirc).
Puis-je réaliser cela avec un paramètre à l'intérieur de web.xml/faces-config.xml? Je pense que la FacesServlet est le contrôleur de ma webapp il devrait donc servir à cette fin?
Et une autre question pour comprendre le Modèle 2 Modèle. Est-ce que chaque action d'aller d'abord à une servlet qui gère ensuite la prochaine étape? Ainsi, une simple <a href="anotherPage.html" />
est interdit dans ce modèle, car il ne va pas à la contrôler servlet?
source d'informationauteur Tim
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas. Fichiers dans
/WEB-INF
dossier ne sont pas directement accessibles.Il y a deux options pour résoudre le problème de la JSF fichiers sources publiques accessibles.
Carte de la
FacesServlet
sur*.xhtml
au lieu de*.jsf
.Ou restreindre l'accès direct sur
*.xhtml
par un<security-constraint>
dansweb.xml
.Voir aussi:
La
FacesServlet
déjà fait. C'est le contrôleur. Avec JSF-vous déjà à la fin avec un simple javabean comme modèle et JSP/Facelets fichier comme point de vue. LeFacesServlet
comme étant le contrôleur a déjà pris toutes les méchants travail de paramètre de la requête de collecte, de validation, de conversion, modèle de mise à jour et la navigation de vos mains.Voir aussi:
Pas, c'est très bien. Le contrôleur d'un coup de pied à chaque fois que nécessaire. Si la ressource n'a pas besoin d'un contrôleur (c'est à dire de la ressource statique), alors vous aussi n'avez pas besoin de le laisser passer à travers certains contrôleur.
Dans l'avenir, vous devez vous poser plusieurs questions distinctes Débordement de Pile questions.
La sécurité de la contrainte n'est qu'une solution de contournement pour un programme d'ACI portés disparus.
Comment puis-je faire correspondre une url comme à la maison.jsf dans un fichier différent de la maison.xhtml mis sous WebContent?
De cette façon, j'ai beaucoup de couplage entre la navigation et la structure du projet.
Comment puis-je éviter que JSF?
Pour accéder à
xhtml
pages à l'intérieur deWEB-INF/jsf
dossier que vous pouvez faire:xhtml
dossier pages dewebapp root
àWEB-INF
url
en fonction de pages de l'application.xhtml
"WEB-INF/jsf/<name>.xhtml
"jsf ViewHandler getActionUrl
à exclure "WEB-INF
" de l'généréaction
url
(deform, link, button
)Par exemple,
xhtml
pages sont en webapp dossier racine "jsf
". Tous lesurl
entre les pages sont commejsf/<pageName>.xhtml
. Donc, nous n'suivante:déplacer
<webapp root>/jsf
à<webapp root>/WEB-INF/jsf
créer FrontController servlet:
`
web.xml
àurl
en fonction de pages:web.xml
à.xhtml
request
pour corrigerxhtml
page:`
Donc, si l'url de la page a été
/myapp/jsf/home.xhtml
puis Répartiteur transmettra àmyapp/WEB-INF/jsf/home.xhtml
. Et les Faces Servlet va gérer ".xhtml
" demande. Mais si sur une page sont utilisésjsf
composants commeh:form, h:link, h:button
etc qui génèrentaction
ouurl
puis leurl
sera vraiment compris "/WEB-INF
". Donc à l'exclure nous avons besoin de la prochaine étape.Exclure "
/WEB-INF
" dejsf
généréurl
(jsf formulaire, lien, bouton).Pour qui:
6.1 créer un sous-groupe de
jsf ViewHandler
et remplacergetActionUrl
:`
6.2 configurer
jsf
utliser leViewHandler
. Dansfaces-config.xml
ajouter suivant: