2010-09-16 19 views
1

J'utilise EJB et JSF. J'ai fait une simple page jsp avec un bouton "get list". Quand on clique dessus, une méthode de bean géré est appelée qui définit la liste, qui est ensuite affichée dans le jsp avec la balise dataTable.Liste de précharge JSF pour datatable dans la page

La question est, comment puis-je pré-charger cette liste/dataTable sur le chargement de la page sans avoir à cliquer sur le bouton?

Ceci est la méthode qui est appelée par l'action du bouton sur le jsp:

public String retrieveList() { 
    items = facade.getAllItem(); 
    return ""; 
} 

c'est la partie du jsp:

<h:dataTable value="#{mybean.items}" var="sup" 
    binding="#{mybean.dataTable}" 
    rowClasses="oddRow, evenRow" 
    styleClass="tableStyle" 
    headerClass="tableHeader" 
    columnClasses="column1, column2, column1, column1, column1, column1"> 

Répondre

2

Annoter la méthode avec @PostConstruct et se débarrasser de retour valeur.

@PostConstruct 
public void retrieveList() { 
    items = facade.getAllItem(); 
} 

De cette façon, la méthode sera exécutée immédiatement après la construction du grain et l'injection de toutes les dépendances @EJB. Dans la page JSF, vous devez simplement lier à #{bean.items} de la manière habituelle.

+0

thankyou génial! – Jojje

+0

De rien. Ne pas oublier de marquer la réponse la plus utile à acceptée. Voir aussi http://stackoverflow.com/faq. – BalusC

4

Vous pouvez ajouter une méthode init avec @PostConstruct

@PostConstruct 
public void init(){ 
    items = facade.getAllItem(); 
} 

Cela renverra les éléments que sur la création de haricots,