Passage de paramètres à une vue étendue de haricot JSF
Permet d'imaginer j'en ai deux dans mes pages JSF 2 de la demande: la première page affiche un tableau d'objets (voitures ou quoi que ce soit) et une autre page est en mesure d'afficher les détails d'un objet spécifique.
Le tableau de la page est en demande portée parce que les objets doivent être rechargés à chaque fois que l'utilisateur en fait la demande. La page de détail est à portée de vue.
Alors, quand je clique sur un objet à l'intérieur de la table, cet objet doit être affiché dans la page de détails. Avec une redirection, je suis capable d'aller à la page des détails, mais les détails de la page est vide, car un nouveau vew a été généré.
Ok, j'ai pu modifier la portée de la session, mais cela conduirait à d'autres problèmes, donc je voudrais avoir la page de détails à portée de vue. Est-il un moyen de passer un argument à une nouvelle generted portée de vue de haricot?
Mise à JOUR de 1
Voici l'extrait de code avec le premier essai de l'utilisation de paramètres d'affichage. Comme le faisait remarquer cela ne fonctionne pas. La valeur est passée en tant que paramètre de la requête, mais dans la page cible, la valeur est null.
Le tableau à la page:
<h:button value="Go to details" outcome="targetPage">
<f:param name="carId" value="This is a test" />
</h:button>
Détails page:
<f:metadata>
<f:viewParam name="carId" value="#{bean.id}" />
<f:event type="preRenderView" listener="#{bean.loadData}"/>
</f:metadata>
Haricot de détails à la page:
private String id;
public String getId() {
return id;
}
public void setId( String id ) {
this.id = id;
}
public void loadData() {
System.out.println( "Id: " + id );
}
Mise à JOUR 2
J'ai trouvé mon erreur. La partie de métadonnées dans un fichier de modèle. Quand j'ai mis la balise pour le fichier principal de la page des détails, il fonctionne. Je vous remercie beaucoup.
- visitez [ce lien][1] ici, vous pouvez trouver l'explication complète. [1]: stackoverflow.com/questions/4888942/...
Vous devez vous connecter pour publier un commentaire.
À l'aide de paramètres de vue est la plus appropriée à votre cas. Vous n'avez pas vraiment besoin pour effectuer une REDIRECTION, mais un simple requête GET:
Ce sera le point de vous à cette adresse: carDetails.xhtml?carId=1
Après que, dans votre carDetails.xhtml page, saisir le point de vue param et de la charge de l'info pour la voiture:
Où
CarDetailBean#loadData
juste des charges de l'info pour votre voiture à l'affichage avec l'id donné, déjà définie dans le bean.Voir aussi: