Bonjour,
J'ai un problème de rafraichissement de datatable (je dirais même de n'importe quel composant JSF) à partir de code javascript.
Je développe une petite application sur jBoss dans le contexte suivant:
- un bus de messages partage des informations sur un TOPIC
- ces informations sont persistées dans une table (bean entité) par un MDB qui est client du TOPIC
Mon application doit permettre de visualiser ces information dans une page web et mettre à jour la page lorsque de nouveaux messages sont envoyés au TOPIC.
J'utilise jBoss Seam et les JSF pour afficher mes informations: ma page xhtml est bindée à un bean qui s'occupe de charger la table. Les informations obtenues sont affichées dans un datatable avec des colonnes cliquables pour afficher plus d'informations si besoin. Jusque là tout va bien.
Le problème vient de la partie remoting avec la gestion du topic JMS. Le code javascript qui associe une fonction de callback à mon topic fonctionne: je fait un "alert()" dedans qui s'affiche lorsque le topic reçoit un message. Par contre je n'arrive pas à mettre à jour le contenu du datatable sans interagir avec. En effet, lorsque je recharge les informations, le seul moyen de les faire apparaitre sur la page c'est de cliquer sur un des liens des colonnes de la datatable.
J'ai essayé plusieurs solutions:
- réinitialiser à null les éléments contenus dans le bean pour relancer le chargement
- utiliser ajax4jsf et la propriété reRender des commandLink
- récupérer les composants JSF dans le bean (prometteur, mais mon findComponent me renvoit null )
Je suis sur le point de laisser tomber JSF pour tout refaire en javascript et générer mon tableau moi-même. Mais avant d'en arriver là, j'aimerais avoir l'avis de personnes éclairées sur l'utilisation de JSF et les possibilités de manipulation des datatables via du javascript ou du java.
En espérant avoir été clair.
Partager