2010-06-09 4 views
3

Dans JSF, comment transmettre un paramètre d'une page à une autre sans utiliser de beans gérés?JSF Passer le paramètre à une autre page

par exemple.

<h:dataTable value="#{myObjects}" var="object"> 
<h:column>    
     <h:commandButton value="View Object" action="view-object"/> 
</h:column>            
</h:dataTable> 

Je veux passer l'objet pour une la page suivante je peux simplement faire # {} object.displayValue

Thxs. Tout d'abord, vous ne pouvez pas le faire sans utiliser un bean géré.

Répondre

5

La meilleure approche serait d'utiliser un DataModel comme value du h:dataTable afin que vous puissiez récupérer l'objet de ligne sélectionnée par DataModel#getRowData(). Vous devez seulement vous assurer que le bean conserve le même modèle dans la requête suivante. En d'autres termes, remplissez le modèle dans le constructeur du haricot.

<h:form> 
    <h:dataTable value="#{bean.model}" var="item"> 
     <h:column>    
      <h:commandButton value="View Object" action="#{bean.view}"/> 
     </h:column>            
    </h:dataTable> 
</h:form> 

Avec une demande (ou session) SCOPED haricots qui ressemble à ceci:

public class Bean { 

    private DataModel model; 
    private Item item; 

    public Bean() { 
     List<Item> list = new ArrayList<Item>(); 
     list.add(new Item(1, "value1")); 
     list.add(new Item(2, "value2")); 
     list.add(new Item(3, "value3")); 
     model = new ListDataModel(list); 
    } 

    public String view() { 
     item = (Item) model.getRowData(); 
     return "view"; 
    } 

    public DataModel getModel() { 
     return model; 
    } 

    public Item getItem() { 
     return item; 
    } 

} 

Je suppose que vous utilisez 1.x JSF et non encore 2.x, sinon un haricot @ViewScoped était better.

Et dans la page suivante:

<p>#{bean.item.value}</p> 
+0

Je mis mon dataTable cette façon, en utilisant JSF2.0, GlassFish 3.0.1, et un haricot ViewScoped. Lorsque je navigue sur ma page d'affichage, rien ne s'affiche. Il semble que lorsque je navigue loin de la page avec le dataTable toutes les variables sortent de la portée. – Sean

Questions connexes