Comment créer une requête GET avec des paramètres, en utilisant JSF et les règles de navigation?
Est-il un moyen de créer un lien html à l'aide de h:outputLink, d'autres JSF balise ou un code pour créer un non faces requête HTTP (GET) avec les paramètres de la demande?
Par exemple, j'ai de navigation suivantes de la règle de
<navigation-rule>
<navigation-case>
<from-outcome>showMessage</from-outcome>
<to-view-id>/showMessage.jsf</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
Dans ma page j'aimerais sortie le code html suivant:
<a href="/showMessage.jsf?msg=23">click to see the message</a>
Je pourrais juste écrire le code html dans la page, mais je veux profiter de la navigation de la règle afin de disposer de toutes les url définie dans un seul fichier configurable.
source d'informationauteur Panagiotis Korros
Vous devez vous connecter pour publier un commentaire.
C'est une idée intéressante. Je serais curieux de savoir comment il fonctionne bien dans la pratique.
L'obtention de la navigation règles
La Navigation est assurée par le NavigationHandler. Se procurer de l'NavigationHandler n'est pas difficile, mais l'API n'exposez pas les règles qu'il utilise.
Comme je le vois, vous pouvez:
Maintenant, vous avez un autre problème aussi. Où allez-vous tenir les mappages de regarder les points de vue? Code en dur dans les haricots?
En utilisant les règles de navigation
La main, je pense à deux façons que vous pouvez construire paramètre contenant les Url à partir du back-end. Les deux impliquent la définition d'un bean d'une certaine sorte.
Source:
OBTENIR
Pour une requête GET, vous pouvez utiliser le UIParameters pour définir les valeurs et laissez le moteur de rendu de construire la liste des paramètres.
POST
Si vous souhaitez définir l'URL de la vue au cours d'une action POST, vous pouvez le faire en utilisant une redirection dans une action (appelée par un bouton ou un commandLink).
Notes
Noter que ExternalContext.encodeActionURL est utilisé pour le codage de la chaîne. C'est une bonne pratique pour la production de code est portable dans des contextes variés (portlets, etc...). Vous utilisez encodeResourceURL si vous encodez un lien vers une image ou un fichier à télécharger.
Essayé d'utiliser PrettyFaces? C'est un open-source JSF extension spécialement conçu pour faire bookmarkable pages JSF /JSF avec les requêtes GET possible.
PrettyFaces - SEO, les Paramètres de la Dynamique, de Signets et de Navigation JSF /JSF2
Avez-vous considéré comme une forme?
Vous pouvez utiliser un commandLink avec imbriqué balises param. C'est essentiellement la même que hubbardr dit ci-dessus:
Puis dans le backing bean que vous devez faire:
Et puis faire ce que vous devez faire.