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 :

Comportement bizarre de JSF


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 99
    Par défaut Comportement bizarre de JSF
    Salut,
    je suis en train d'apprendre à utiliser jsf tout seul et je suis confronté à un comportement bizarre venant de ma page:

    Je créé un formulaire dynamiquement constitué de lignes de course .
    Quand je modifie une ligne, il faut que je click 2 fois sur le bouton "changer" pour que la mise à jour s'effectue. Ensuite, si je refais une modif sur la même ligne, la modif est prise en compte au premier coup.

    voici les codes de ma page et de mon bean:
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:ui="http://java.sun.com/jsf/facelets">
        <h:head>
            <title>Formulaire dynamique</title>
        </h:head>
        <h:body>
            <h:panelGroup id="rootForm">
                <ui:repeat value="#{formuBean.listeCourse}" var="element">           
                    <h:form>
                        <h:inputHidden id="id" value="#{element.num}"/>
                        <h:inputText id="texte" value="#{element.elem}"/>
                        <h:inputText id="nb" value="#{element.nb}"/>
                        <h:commandButton value="Changer">
                            <f:ajax execute="@form" render=":sortie" listener="#{formuBean.changeElem()}"/>
                        </h:commandButton>
                        <h:commandButton value="Supprimer la ligne">
                            <f:ajax execute="@form" render=":sortie" listener="#{formuBean.supprElem()}"/>
                        </h:commandButton>                    
                        <br/>
                    </h:form>
                </ui:repeat>
                <h:form>
                    <h:commandButton value="Ajouter une ligne">
                        <f:ajax render=":rootForm :sortie" listener="#{formuBean.ajouteElem()}"/>
                    </h:commandButton>
                </h:form>
            </h:panelGroup>
            <br/>
            <h:panelGroup id="sortie">
     
                <ui:repeat value="#{formuBean.listeCourse}" var="element">
                    #{element.num}
                    #{element.elem}
                    #{element.nb}
                    <br/>
                </ui:repeat>
            </h:panelGroup>
        </h:body>
    </html>
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    @ManagedBean
    @SessionScoped
    public class formuBean {
     
        public formuBean() {
        }
     
        LinkedList<Element> listeCourse = new LinkedList<Element>();
        Integer id;
        String texte;
        Integer nb;
     
        public Integer getId() {
            return id;
        }
     
        public void setId(Integer id) {
            this.id = id;
        }
     
        public Integer getNb() {
            return nb;
        }
     
        public void setNb(Integer nb) {
            this.nb = nb;
        }
     
        public String getTexte() {
            return texte;
        }
     
        public void setTexte(String texte) {
            this.texte = texte;
        }
     
        public LinkedList<Element> getListeCourse() {
            return listeCourse;
        }
     
        public void ajouteElem(){
            listeCourse.add(new Element(listeCourse.size()+1, "", 0));
        }
     
        public void changeElem(){
            Integer index;
            for(Element i:listeCourse){
                if(i.num==this.id){
                    index=listeCourse.indexOf(i);
                    listeCourse.get(index).setNb(this.nb);
                    listeCourse.get(index).setElem(this.texte);
                }
            }
        }
     
        public void supprElem(){
            for(Element i:listeCourse){
                if(i.num==this.id){
                    listeCourse.remove(listeCourse.indexOf(i));
                }
            }        
        }
    }
    Est-ce que qq1 pourrait me dire comment je pourrais normaliser ce comportement?
    Si vous avez des remarque sur la façon dont j'aborde le problème ou s'il existe une autre façon de faire avec JSF, lâchez-vous...

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    essaye de mettre ajax="false" au niveau du button ou il y a le problème du clic deux fois

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 99
    Par défaut
    Je viens d'essayer et ça ne fonctionne pas.
    De plus votre réponse me laisse perplexe pour plusieurs raisons:
    _ le bouton doit déclencher une requete ajax, alors pourquoi indiquer le contraire...
    _l'auto-completion de netbean n'a pas l'air de reconnaitre ce parametre sur cette balise.
    _après quelques recherches, ce parametre a l'air d'etre utiliser par primeface

    Merci quand même.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Par défaut
    Salut,

    Essaie de faire un render sur le @form en plus de :sortie

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 99
    Par défaut
    Bonjour,
    j'avais déjà essayé et cela ne fonctionnait pas plus et même ca force même à ressaisir les champs du formulaire. La saisie est alors prise en compte la seconde fois.
    Du coup, c'est le passage de valeur au bean qui n'a pas l'air de se faire correctement.

  6. #6
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Je propose de mettre /redirect après dans chaque navigation-case de ton fichier faces-config.xml

    Eric

Discussions similaires

  1. Comportement bizarre de mes FPS
    Par Ekinoks dans le forum OpenGL
    Réponses: 7
    Dernier message: 22/08/2005, 15h14
  2. xsl:test .... avec comportement bizarre
    Par Blue LC dans le forum XMLRAD
    Réponses: 2
    Dernier message: 10/06/2005, 13h56
  3. [ACESS][MEMO][ISNULL]Comportement bizarre
    Par seb.49 dans le forum ASP
    Réponses: 2
    Dernier message: 09/06/2004, 10h44
  4. [HttpClient] comportement bizarre, saute des catch()...
    Par iubito dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 04/02/2004, 15h25
  5. [Sybase] Comportement bizarre d'une table
    Par sdozias dans le forum Sybase
    Réponses: 4
    Dernier message: 03/02/2004, 10h39

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