2013-01-23 3 views
2

J'essaie de passer un paramètre à une autre page. J'ai une catégorie d'images et cette liste est dans une portée de session, un lien est créé pour chacune de cette catégorie dans mon modèle d'en-tête.JSF Passage de paramètre et redirection pour voir la portée

Je voudrais rediriger vers une nouvelle page et passer la catégorie sélectionnée.

<h:dataTable id="categoryMenu" value="#{menuBean.listCategory}" var="category"> 
    <h:column> 
     <h:link value="#{category.name}" 
    outcome="/image/imageList.xhtml" > 
     </h:link> 
    </h:column> 
</h:dataTable> 

Mais maintenant, je voudrais que mon imageList.xhtml page associée à une ImageListBean.java obtenir la catégorie sélectionnée.

J'ai essayé beaucoup de choses en demandant des paramètres GET avec f: param, mais parce que mon ImageListBean.java doit avoir une vue étendue, cela ne fonctionne pas.

Répondre

7

Votre haricot ViewScoped ne devrait pas poser de problème. Avec ce code:

<h:link value="#{category.name}" outcome="/image/imageList.xhtml"> 
    <f:param name="categoryName" value="#{category.name}"/> 
</h:link> 

vous devriez être en mesure d'accéder à ce paramètre dans votre backing bean avec ceci:

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("categoryName") 
+0

Merci qui a fait l'affaire! – markand

2

Avez-vous essayé viewParam sur imageList.xhtml?

<f:metadata> 
    <f:viewParam name="id" value="#{bean.id}" /> 
</f:metadata> 

Il fait essentiellement les suivantes:

  • Obtenir la valeur de paramètre de requête par id nom.
  • Convertissez et validez si nécessaire (vous pouvez utiliser les attributs requis, de validateur et de convertisseur et imbriquer un et comme dans)
  • Si la conversion et la validation réussissent, définissez-la comme une propriété de bean représentée par # {bean .id}

vous pouvez passer l'identifiant de la catégorie sur le lien de résultat (imageList.xhtml? id = 1, par exemple) et le récupérer sur votre ImageListBean, une fois que vous avez le paramètre « id », vous pouvez obtenir la catégorie recherche sur votre base de données.