2010-09-01 6 views
1

J'ai un rich:extendedDataTable à l'intérieur d'un rich:tab.Actualiser la table sur le rendu

Je souhaite actualiser la table dataSource à chaque fois que la table est rendue. Il est rendu à chaque fois que l'onglet est sélectionné.

Dans un écrou:

Vue:

<rich:tab> 
<rich:extendedDataTable data="#{myData.data}"/> 
</rich:tab> 

Bean:

public class MyData{ 
List data; 

public MyData(){ 
data = this.refreshData(); 
} 

public List getData(){ 
return data; 
} 

public List refreshData(){ 
//Database things here. 
} 
} 

Comment puis-je appeler à refreshData chaque fois que la table est rendue? Je peux utiliser reRender sur le composant qui exécute une action qui modifie data, mais cela casse l'encapsulation des composants et il est difficile à maintenir. Il est préférable que la table puisse rafraîchir data par elle-même à chaque fois que reRendered lorsque l'onglet est activé.

Je pourrais utiliser <rich:tab ontabenter='js_function_that_calls_the_server_and_refreshes_the_data'> mais je ne pense pas que ce soit la meilleure option, parce que vous devriez placer la fonction en dehors des étiquettes de tabulation et d'ailleurs elle jette deux demandes au lieu d'une seule.

Des idées? apprécié.

Répondre

3

Vous pouvez essayer quelque chose comme ceci:

<rich:tab action="#{mydata.refreshData}" reRender="myTable"> 
    <rich:extendedDataTable id="myTable" data="#{myData.data}"/> 
</rich:tab> 
+0

omg, je ne savais pas que '' tab' a le action' paramètre. Cela rend les choses tellement plus faciles ... Merci, je vais essayer. – pakore

+0

Cochez ici: http://docs.jboss.org/richfaces/latest_3_3_X/en/tlddoc/rich/tab.html – amorfis

+0

Oui, j'utilise toujours cette documentation. Je ne sais pas pourquoi mais je n'ai pas fait attention au paramètre d'action au début. Cela fonctionne maintenant, merci. – pakore