2010-06-30 7 views
2

J'ai un datatable, qui extrait des informations d'une base de données. J'ai ajouté un bouton au formulaire que je veux utiliser pour forcer l'actualisation de la table (id de "table"), mais je ne suis pas sûr de savoir comment le faire. Ce que j'ai maintenant:Comment forcer l'actualisation de datatable via AJAX dans JSF 2.0?

<h:commandButton value="Refresh"> 
    <f:ajax render="table"/> 
</h:commandButton> 

Mon objectif était d'avoir la composante de table soit forcée de rendre lorsque le bouton est cliqué. Cependant, il semble que le clic soit ignoré ou qu'il renvoie des données mises en cache plutôt que de sortir et d'appeler à nouveau le code de ma base de données.

Qu'est-ce que je fais mal?

Répondre

0

Ugh. Cela fonctionne, incroyablement lent. Nous avons récemment changé de serveur de base de données, et une requête qui a pris moins d'une seconde sur l'ancienne prend juste 20 secondes et plus sur la nouvelle. Je venais juste de sortir en regardant ça. Soupir.

En remarque, dès que j'ai compris cela, j'ai testé à la fois avec et sans action. Fonctionne dans les deux sens (avec le getter faisant la recherche).

1

Vous devez spécifier une action dans votre commandButton qui appelle un bean et actualise les données affichées dans la table (actuellement le bouton ne fait rien). Je ne suis pas un pro, mais je pense qu'il devrait ressembler à ceci:

<h:commandButton value="Refresh" action="#{myBean.refreshData}"> 
    <f:ajax render="table"/> 
</h:commandButton> 
+0

J'ai aussi essayé. La méthode bean est appelée, mais la table ne se met jamais à jour. Il n'y a pas de besoin particulier d'appeler une méthode dans mon cas car l'accesseur que la table référence fait la recherche dans la base de données (je ne cache pas actuellement dans un objet). –