IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

[JSF][JBOSS][REMOTING] manipulation / rafraichissement de datatable dans du code java


Sujet :

JSF Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 75
    Points
    75
    Par défaut [JSF][JBOSS][REMOTING] manipulation / rafraichissement de datatable dans du code java
    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.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Ta source de données ou tu accèdes n'est pas partagé, tu ne possèdes pas de listener provenant d'un client tiers, dans ton application web JSF tu accèdes aux données par un contexte d'application, il faut que tu accèdes à une source de données type pubishers / subscriber.

    A mon avis tu pourrais régler ce cas en utilisaent un message driven bean ou JMS.

    Je connais pas assez le sujet pour t'en dire plus. A voir ce qui est proposé.

    Mais comment avertir une page qui accède à une certaine source de donnée sans devoir emettre de requete sur le server ... A mon avis c'est impossible.

    Avertir un client léger que des données ont été modifiés sans que le client ne fasse de requête est inimaginable.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 75
    Points
    75
    Par défaut
    *alexandre*,

    Merci pour ta réponse, j'ai l'information qui m'intéresse:
    - Avertir un client léger que des données ont été modifiés sans que le client ne fasse de requête est inimaginable.

    Dans ce cas, est-il possible de forcer le client à générer une requête vers le serveur? C'est à dire de forcer un composant JSF (datatable en l'occurence) à générer cette requête?

    L'ideal serait de pouvoir déclarer un listener sur le datatable qui serait à l'écoute d'un évènement customizé. Il est possible de créer des évènement javascript via l'api fournie par yahoo (http://developer.yahoo.com/yui/event/). A partir de là, je n'aurais qu'à déclencher mon évènement dans le code javascript pour que le datatable le reçoive et envoie une requête au serveur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Mon évènement customisé
    var onMessageReceived = new YAHOO.util.CustomEvent("onMessageReceived"); 
     
    // Connection à mon topic JMS dans jBoss SEAM
    function connect_alarm() {
    	Seam.Remoting.subscribe("ALARM", jmsCallback);  
    }
     
    // Callback du topic JMS
    function jmsCallback(message) {
    	onMessageReceived.fire();	// déclenche l'évènement
    }
     
    // [PB] le code pour associer l'évènement au datatable ??? :'(
    Le problème, c'est que je n'arrive à associer mes composants JSF qu'à des évènements javascript standarts (onclick, ...).

    Est-il possible d'associer un évènement personnalisé à un composant JSF, que ce soit au niveau de la page jsf ou au niveau du code javascript?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 75
    Points
    75
    Par défaut
    Finalement j'ai entièrement généré et codé le comportement de ma table en ajax. Ca a permis de régler deux effets de bord désagréables et je garde le contrôle du comportement de mon appli.

    Les composants jsf, c'est bien pour développer rapidement une interface sexy... Mais dès qu'on ajoute des fonctionnalités, c'est l'impasse!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/06/2012, 22h52
  2. integration d'une api dans un code java
    Par alphonse62 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 09/04/2007, 11h29
  3. Valeur asp dans le code Java ?
    Par kaiser59 dans le forum ASP
    Réponses: 4
    Dernier message: 25/01/2007, 17h33
  4. Réponses: 19
    Dernier message: 04/10/2006, 16h53
  5. Du PL/SQL dans du code Java
    Par tikiwine dans le forum JDBC
    Réponses: 12
    Dernier message: 02/03/2006, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo