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 :

rafraichir un element d'une page


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut rafraichir un element d'une page
    bonjour,

    Je cherche s'il est possible de rafraichir un element d'une page JSF. J'ai un page qui permet d'envoyer les données d'une base de données 1 vers une base de données 2. Cette page contient un élément selectManyListbox où l'utilisateur choisit ce qu'il souhaite tranferer. A la fin du transfert j'affiche un message pour indiquer que l'opération est terminée.

    Mon problème c'est que la page n'est pas rafraichie et que la liste contient tout les éléments alors que je voudrais quelle ne contienne que les élement non transferrée ou qu'elle soit vide suite au transfert.

    Pour afficher le message j'utilise la méthode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    msgError = bundle.getString("synchronization_successful");
                FacesContext.getCurrentInstance().addMessage(null,
                        new FacesMessage(FacesMessage.SEVERITY_INFO, msgError, msgError));
    et je retourne null. C'est a cause de mon null que la liste n'est pas rafraichi mais je ne sait pas comment je peux faire pour 1 avoir mon message (ou pas de message si le transfert n'a pas encore au lieu) en sachant que l'on peut acceder a cette page par plusieurs moyen (difficile de gérer un boolean en session) et 2. rafraichir le contenu de ma liste.

    Voici le code de ma liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:selectManyListbox id="listSynchronization" styleClass="bigListbox" value="#{Synchronization.toSynchronizeSelected}">
                                            <f:selectItems value="#{Synchronization.toSynchronize}"/>
                                        </h:selectManyListbox>
    Voici mes accesseurs/mutateurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    public String[] getToSynchronizeSelected() {
            getSessionBean().setSelectedItemToSynchronize(null);
            return toSynchronizeSelected;
        }
     
        public void setToSynchronizeSelected(final String[] l) {
            this.toSynchronizeSelected = l;
        }
     
        public SelectItem[] getToSynchronize() {
            final SelectItem[] groupOptions = loadGroupOptions();
            final SelectItem[] userOptions = loadUserOptions();
     
            final SelectItemGroup groups = new SelectItemGroup();
            groups.setLabel(bundle.getString("synchronization_groups"));
            groups.setSelectItems(groupOptions);
     
            final SelectItemGroup users = new SelectItemGroup();
            users.setLabel(bundle.getString("synchronization_users"));
            users.setSelectItems(userOptions);
     
            toSynchronize = new SelectItem[]{groups, users};
            toSynchronizeSelected = getSessionBean().getSelectedItemToSynchronize();
     
            return toSynchronize;
        }
     
        public void setToSynchronize(final SelectItem[] dol) {
            this.toSynchronize = dol;
        }
    Merci pour votre aide

  2. #2
    Membre éclairé Avatar de Jacobian
    Inscrit en
    Février 2008
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 425
    Par défaut
    utilise Richfaces tu vas trouver ton perdus

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    Je 'nai aps le droit d'utiliser de librarie particulière. Je dois tout faire avec du JSF pur

    Ou peut etre en java script mais la je connais pas et je sais pas s'il est possible de rafraichir un element en recuperant la valeur souhaiter dans le bean.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ne renvoie pas null dans ton action, mais renvoie un résultat cohérent. Ensuite, si tu veux rester sur la même page, il suffit de mettre en place une navigation rule de la page vers elle même.

    Enfin, pour ton problème de "rafraichissment", c'est tes méthodes loadXXXX() qui renvoient la liste à afficher, jsf ne fait aucun cache nulle part de ce coté là. Si cette liste est mauvaise à l'affichage, c'est donc toi qui génère des mauvaises valeurs.

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    Le problème c'est que si je fais un renvoi sur ma page avec la anvigation. Je perd mon message d'information pour indiquer à l'utilisateur que le transfert c'est bien passé ou non.

    En supposant que j'utilise la navigation :Comment faire pour savoir si cette page est simplement afficher à la demande de l'utilisateur en cliquant sur l'un des liens ou bien si j'affiche cette page suite a un transfert ? Comment garder mon message d'information?

    EDIt : je sais que mon getteur fonctionne correctement car suite a un transfert si je rafraichit ma page ma liste est bien vide.

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Edta Voir le message
    Le problème c'est que si je fais un renvoi sur ma page avec la anvigation. Je perd mon message d'information pour indiquer à l'utilisateur que le transfert c'est bien passé ou non.
    Ca ne se produit que si tu met <redirect/> dans ta règle de navigation. Tu n'en a pas besoin.

    Citation Envoyé par Edta Voir le message
    je sais que mon getteur fonctionne correctement car suite a un transfert si je rafraichit ma page ma liste est bien vide.
    Ca prouve juste que le getteur qui fonctionne mal est request scope. Quand tu rafraichis manuellement la page, tu fait une nouvelle requête, les bean request scope sont donc recréés à partir de 0. Tu dois donc chercher où, toi, tu fais du cache d'information dans le request scope. Sans voir le code de ton bean, difficile à dire, mais tu fais probablement quelque chose comme çà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    X x;
    public X getX(){
     if (x==null)
        creerX();
     return x;
    }

    Ce genre de caching de donnée pose problème si tu veux que ton getteur envoie des informations différentes entre avant et après l'action.

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par Jacobian Voir le message
    utilise Richfaces tu vas trouver ton perdus
    il ne faut pas itoujours incriminer Richfaces , le problème est peu etre du pure JSF, les messages sont ajoutés au context dans une phase après ils ne sont plus pris en compte, c'est peu être du à ça ton problème..
    désolè de ne pas etre plus clair, je n'ai pas eu le temps de bien regarder le code, j'en dirais plus plus tard s'il n'y a pas de réponses.

Discussions similaires

  1. compter le nombre d'element dans une page
    Par the-destroyer dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/10/2009, 19h24
  2. Rafraichir un élément d'une page
    Par Edta dans le forum JSF
    Réponses: 8
    Dernier message: 21/08/2009, 15h25
  3. Connaitre le nom des elements d'une page internet
    Par andrebernard dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 02/06/2009, 11h46
  4. fixer des elements d'une page
    Par jmjmjm dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 02/11/2006, 23h55

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