12
votes

Personnaliser la facageservlet pour vous débarrasser de l'extension .xhtml

J'ai login.xhtml et home.xhtml . J'ai configuré le motif d'URL dans web.xml comme suit xxx

lorsque j'exécute tout le projet, la page de connexion URL est comme ça http: // localhost: 8080 / fr / login.xhtml , ici fran est mon nom de projet ..

Cependant, j'aimerais qu'elle Soyez http: // localhost: 8080 / Fran / Login / au lieu de http: // localhost: 8080 / Fran / login.xhtml .

Comment puis-je atteindre cet objectif? Est-il possible de personnaliser le pour chaque page pour vous débarrasser de la .xhtml extension?


4 commentaires

Jetez un coup d'œil à OCPSOFT.ORG/PETTYFaces , regardez le 2. Créer un exemple jolie-config.xml dans la page principale


@DANIEL. / code> est-il nécessaire de configurer assez de filtre dans web.xml


Omnifaces FaceSeViews offre une manière à configuration zéro de se débarrasser de .xhtml Extension. Il a été utilisé entre autres, entre autres showcase.omniface.org et zef.com .


@ Balusc..Merci de votre réponse..qui est très plus facile de configurer ... et la documentation qui est tracée là-bas était fantastique .. Tout le monde peut le comprendre ... Je suis si heureux d'utiliser ce plugin ... merci pour suggestions..


3 Réponses :


3
votes

Jetez un coup d'oeil à PrettyFaces: Jolies URL pour JavaServer Face ,

Regardez le 2. Créez un exemple jolie-config.xml dans la page principale

regarder le Chapitre 2. Obtenez A commencé


2 commentaires

YA Partie seulement seule ..?


@Daniel merci d'avoir souligné PrettyFaces - on dirait que cela résoudra le problème que j'ai qui rend les URL plus conviviales



15
votes

Si votre seule raison est de se débarrasser de l'extension .xhtml code>, il existe différentes manières en fonction de la version JSF que vous utilisez.

JSF 2.3 + H3> JSF 2.3 propose une nouvelle API pour collecter toutes les vues: The Viewhandler # GeveViews () code> . Combinez ceci avec sellletregistration # addmapping () code> dans un servletContextListener code> comme ci-dessous. p> xxx pré>

efficacement, c'est un bon mot. Source: Blog d'Arjan Tijms et Le Guide définitif de JSF . P>

Si vous êtes Utilisation de myFaces en tant que mise en oeuvre JSF 2.3, cela peut alors être activé de manière transparente par uniquement le paramètre suivant web.xml code> paramètre de contexte: p> xxx pré>

mojarra n'a pas de équivalent pourtant. p>

JSF 2.2 - H3>

Utilisez Omniface FaceSeviews . Il offre une manière de configuration nulle pour atteindre cela en plaçant les fichiers de vue dans / web-inf / faces-vues / code> dossier. Sinon, si vous avez l'intention de ne pas modifier votre structure de projet et que vous souhaitez conserver vos fichiers d'affichage à l'endroit habituel et toujours bénéficier des URL sans extension, il s'agit d'ajouter le paramètre de contexte suivant: P>

<context-param>
    <param-name>org.omnifaces.FACES_VIEWS_SCAN_PATHS</param-name>
    <param-value>/*.xhtml</param-value>
</context-param>


1 commentaires

faccescontext.getcurrentInstance () retourne null pour moi.



0
votes

Juste un peu complément à Mr. @Balusc Excelent Réponse À propos de MyFaces sur JSF 2.3 ... (EDIT: Pas vraiment un complément que l'on ne peut pas compléter ce qui est complet, mais juste une solution de contournement pour les utilisateurs de Tomcat / Tomée pour faire face à ce bogue Tomcat).

Utilisation de MyFaces 2.3 .6, j'ai reçu une exception parlant de spécification de servlet et servletContextEnger: p> xxx pré>

Suivre la pile que j'ai vu cette ligne: p> xxx pré> et après avoir ajouté cet auditeur à web.xml tous fonctionnaient bien: P>

<listener>
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>


2 commentaires

Cela ne se produit que lorsque vous utilisez Tomcat au lieu d'un serveur JEE normal et c'est en fait un bogue dans Tomcat lui-même.


Impressionnant! J'utilisais la Tomee 8.0.5. En effet. J'ai vérifié. MyFaces a le fragment Web correct, avec cet auditeur exact. Vraiment un bug de tomcat. Merci Monsieur.