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 :

Mise à jour d'une liste sur tous les ordinateurs


Sujet :

JSF Java

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    avril 2009
    Messages
    169
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2009
    Messages : 169
    Points : 78
    Points
    78
    Par défaut Mise à jour d'une liste sur tous les ordinateurs
    Bonjour,

    Je développe un intranet. Il est structuré en couche (présentation, servide, domaine).
    Actuellement, un utilisateur peut voir tous les client et peut ajouter ou modifier un client. Le souci c'est que lorsqu'il ajoute un client, ça met à jour sa liste, mais celle des autres poste ne sont pas mises à jour.

    C'est un souci uniquement de présentation, car en bd le client a bien été ajouté.

    Tout, simplement, avec jsf, je ne sais pas comment rafraichir la liste des aurtes poste.

    En vous remerciant,
    Nicolas

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    Un peu dur de répondre sans plus de détails, à quel(s) moment(s) tes listes sont mises à jour/construites par la persistance?

    Tu veux que les listes soient rafraichies en "temps réel" ou juste à jour quand on affiche par exemple la vue qui liste les clients?

  3. #3
    Membre régulier
    Étudiant
    Inscrit en
    avril 2009
    Messages
    169
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2009
    Messages : 169
    Points : 78
    Points
    78
    Par défaut
    Oui c'est pas faux, un peut dur de répondre sans plus de détails. Excusez moi.

    Ma liste est toujours affichée : c'est un tableau sur la gauche de l'écran, avec à droite les champs inputText et des commandButton pour ajoute, modifier, ...

    Je souhaiterai que ma liste se rafraichisse en temps réel.

    Ma liste est mise à jour par le constructeur du bean qui sert à afficher les clients.
    Elle est mise à jour à chaque appuie du commandButton "ajouter" :
    1- j'ajoute à ma base de donnée le client
    2- je met à jour ma liste de client, qui est un dataTable


    Je peux te montrer le code si tu veux.

    Nicolas

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    et bien dans ce cas la, je dirais voir du coté des threads pour rafraichir la liste régulièrement pour tes clients, ou bien alors utiliser un managed bean avec scope application , afin de partager cette liste pour tous les utilisateurs.

    Par contre j'ai un gros doute niveau perf et bonnes pratiques avec ces deux solutions.

    Pour ce genre de problématique il me semble que le design pattern Observer est utilisé pour des applis clients riches types swing, il faudrait fouiller pour voir comment il est possible d'implémenter cela pour une appli web jsf.

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

    Informations forums :
    Inscription : mai 2006
    Messages : 2 189
    Points : 2 325
    Points
    2 325
    Par défaut
    Citation Envoyé par Malone Voir le message
    et bien dans ce cas la, je dirais voir du coté des threads pour rafraichir la liste régulièrement pour tes clients, ou bien alors utiliser un managed bean avec scope application , afin de partager cette liste pour tous les utilisateurs.

    Par contre j'ai un gros doute niveau perf et bonnes pratiques avec ces deux solutions.

    Pour ce genre de problématique il me semble que le design pattern Observer est utilisé pour des applis clients riches types swing, il faudrait fouiller pour voir comment il est possible d'implémenter cela pour une appli web jsf.
    quel intérêt d'implémenter observer ? observer n'est utile que pour des applications qui se partagent la même référence à une entité dans le contexte d'une application web il n'y a aucun intérêt vu que ce que tu partage ce sont des données et non des références à un objet particulier

    dans un contexte de session, request comment veux-tu accéder à une référence unique alors que les clients sont différents ?

    Il doit certainement avoir un besoin plus simple qui doit charger les données pour chaque requête et non pas stockés les données en session

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    Il me semblait que l'observer permettait de "surveiller" une méthode ou objet pour pouvoir tenir au courant d'autres objets en cas de modifications, mais aucune certitude la dessus, d'où le "il me semble".

  7. #7
    Membre actif Avatar de rushtakn
    Inscrit en
    mai 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 213
    Points : 240
    Points
    240
    Par défaut
    En fait ce que tu veux faire c'est provoquer un rafraichissement du composant (ou de la vue) pour tous les clients ayant cette vue ouverte et ce à chaque fois que ta liste est modifiée par n'importe lequel des clients ?

    Le plus simple à faire je pense (mais pas forcement mieux en terme de perf) est de rafraichir ton composant periodiquement en ajax. Tu peux le faire avec a4j:poll.

    Sinon, peut etre essayer de stocker dans un bean en scope application les sessions ouvertes sur ta vue et provoquer un rafraichissement des vues à chaque fois que ta liste est modifiée. C'est une idée comme ça, je suis meme pas sur que ce soit faisable :]

  8. #8
    Membre régulier
    Étudiant
    Inscrit en
    avril 2009
    Messages
    169
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2009
    Messages : 169
    Points : 78
    Points
    78
    Par défaut
    Bonjour à tous et merci pour vos réponses.

    J'ai essayé de mettre mon bean qui a la liste en scope aplication, mais ça ne fonctionne pas.

    Quelqu'un peut il m'expliquer pourquoi ça ne fonctionne pas en scope application ?

    Nicolas

  9. #9
    Membre actif Avatar de rushtakn
    Inscrit en
    mai 2006
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 213
    Points : 240
    Points
    240
    Par défaut
    t'as juste changé le scope en application ? tu rafraichis comment ton composant ?

  10. #10
    Membre régulier
    Étudiant
    Inscrit en
    avril 2009
    Messages
    169
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2009
    Messages : 169
    Points : 78
    Points
    78
    Par défaut
    J'ai continué à chercher : je me suis trompé tout à l'heure. Mon bean est en scope application et la liste est bien rafraichie dans mon bean. En fait c'est juste ma dataTable que je doit rafraichir.
    Si je rajoute un bouton qui fait un system.out.println, ça me rafraichi mon composant. Je souhaiterai que ça le face tout seul, sans que l'utilisateur ai à appuyer sur quelque chose.

    Voilà le code de ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <ice:dataTable value="#{secteurActiviteContextUI.listeSecteursActivite}" var="secteursAirod" columnClasses="libelleSecteurActivite">
         <ice:column id="libelleSecteurActivite">
              <ice:rowSelector value="#{secteursAirod.selectionnee}" selectionListener="#{secteurActiviteContextUI.ressourceStrategie.rowSelectionListener}"/>
              <f:facet name="header">
                   <ice:outputText value="Nom" />
              </f:facet>
              <ice:outputText value="#{secteursAirod.libelle}"/>
         </ice:column>
    </ice:dataTable >

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/05/2011, 08h16
  2. [AC-2003] Mise à jour d'une liste sur saisie dans une textbox
    Par tarnx dans le forum IHM
    Réponses: 2
    Dernier message: 30/03/2010, 20h05
  3. Réponses: 18
    Dernier message: 22/06/2006, 18h55
  4. une requete effectuant une recherche sur tous les champs
    Par raynor911 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/02/2006, 16h06
  5. mise à jour d'une liste par un popup
    Par Equus dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/02/2005, 12h21

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