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 :

Problème avec l'attribut immediate


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut Problème avec l'attribut immediate
    Bonjour,

    je suis en train de développer une petite appli web (JSF 1.2 myFaces) et je rencontre des problèmes avec l'utilisation de l'attribut "immediate".

    En effet, mon but est de générer une listBox sur base de la sélection d'une précédante listBox mais voià à chaque fois que je change de valeur dans la 1ere, il soumet tout le formulaire comme si j'avais cliquer sur le bouton du form (donc avec toute la validation etc...)

    Voici les différentes partie de code:

    côté formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <h:form enctype="multipart/form-data">
     
    <h:outputLabel for="codeLieuID" value="#{msgs.insert_insert_a_postal_code}"/>
                    <h:selectOneMenu id="codeLieuID" immediate="true" onchange="submit()" value="#{insertBean.codeLieu}" valueChangeListener="#{insertBean.placeChanged}" >
                        <f:selectItems value="#{insertBean.codesLieuxMain}"/>
                    </h:selectOneMenu>
     
                    <h:outputLabel for="codeLieuSID" value="Select your town"/>
                    <h:selectOneMenu id="codeLieuSID" value="#{insertBean.codeLieuSecondary}" >
                        <f:selectItems value="#{insertBean.codesLieuxSecondary}"/>
                    </h:selectOneMenu>
     
    <h:form>
    et du côté serverur :
    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
     
    public class InsertBean {
      private List<SelectItem> codesLieuxMain = new ArrayList<SelectItem>();
      private List<SelectItem> codesLieuxSecondary = new ArrayList<SelectItem>();
     
        public List<SelectItem> getCodesLieuxMain() {
            List<PlaceCode> tmpList = placeCodeService.findAllFromSameLevel(1);
            codesLieuxMain = new ArrayList<SelectItem>();
            for (PlaceCode pc : tmpList) {
                codesLieuxMain.add(new SelectItem(""+pc.getNumber().intValue(), pc.getName()));
            }
            return codesLieuxMain;
        }
     
        public void setCodesLieuxMain(List<SelectItem> codesLieuxMain) {
            this.codesLieuxMain = codesLieuxMain;
        }
     
        public void placeChanged(ValueChangeEvent evt) {
            codesLieuxSecondary.clear();
            int value = (Integer) evt.getNewValue();
     
            List<PlaceCode> codes = placeCodeService.retrieveListFromNode(value);
            for (PlaceCode pc : codes) {
                codesLieuxSecondary.add(new SelectItem(""+pc.getNumber().intValue(), pc.getName()));
            }
        }
     
        public List<SelectItem> getCodesLieuxSecondary() {
            return codesLieuxSecondary;
        }
     
        public void setCodesLieuxSecondary(List<SelectItem> codesLieuxSecondary) {
            this.codesLieuxSecondary = codesLieuxSecondary;
        }
     
    }

    Si quelqu'un comprend pourquoi la validation se fait complètement au lieu de passer dans mon listener, je suis preneur

    bien à vous et bonne journée.
    Olivier

  2. #2
    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 : 45
    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
    normalement, avec ton code, la premier valeur va etre soumise, validée, le listener appelé, les autre composants validés, et le formulaire réaffiché. Est-ce ça qui te pose problème? Il n'y a pas moyen d'éviter la validation, mais cette validation, dans le cas présent, n'empeche pas ton listener car elle a lieu après.

    PS: pour ce genre de comportement, il vaut mieux utiliser des framework spécialisés, comme richfaces, ça t'évitera des prise de tete, richfaces gere l'ajax et permet de ne valider que certains composants à la fois

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    Salut,
    c'est en effet le fait qu'il valide les autres composant lors de mon changement de valeur qui me pose problème. Je pensais que c'était justement le rôle de l'attribut "immediate" : de faire une requête vers le serveur sans pour autant qu'il valide les autres composants afin d'enrichir le formulaire (ajout d'un champ, population de menu, listbox , ...)


    j'aimerais comprendre et au moins réussir à le faire fonctionner comme cela.

    Bien à vous et bonne journée
    olivier

  4. #4
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    use richfaces ajax region component

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    Tout le monde ne jure que par RichFaces ?

  6. #6
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut

    c'est pas ca mais ton problem viens que quand il ya un submit total de la page, JSF va faire une validation de tous les champs.
    Utilisant richfaces (avec du ajax) tu peux submitter une portion de la page ce qui veux dire validation de cette portion de la page .

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    ok. merci pour le complément d'information

    A quoi sert l'attribut immediate alors ?

    selon la faq ici

    l'attribut immediate permet de faire ce que je désire non ?

  8. #8
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    La je peux pas mieux t'eclairer (j'ai eu a utiliser cet attribut)
    mais d'apres ce que je viens de lire tu as besoin de mettre immediat dans le bouton ou command link qui va submiter la page.
    essaie pour voir.
    personelllemnt j'utilise immediat uniquement dans les boutons annuler et la il passe directement a l'invoke application phase sans passer par les phases de validation and update model.

  9. #9
    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 : 45
    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
    L'attribut immediate n'empeche pas les autres composant de se valider. Elle dit juste que ton composant surbira sa validation et le trasnfert de données vers le bean avant que les autre composants ne soient validé. Peux tu nous dire si ton listener fonctionne correctement? Même si les autres champs sont validés avec erreur, ton listener devrais être appelé.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    pour tchize_ : oui mon listener est bien appelé.

  11. #11
    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 : 45
    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
    alors effectivement, a part utiliser des framework qui vont faire de l'ajax et du rendu partiel, t'as pas d'autre possibilité.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    ohoh,
    déçu qu'il y ait pas un système de base pour faire ce genre de chose.

    je vais donc me tourner vers les frameworks de composants style RichFaces ou ICEFaces


    Merci à vous pour vos réponses
    Olivier

Discussions similaires

  1. Problème avec l'attribut property du select
    Par wiam26 dans le forum Struts 1
    Réponses: 3
    Dernier message: 21/09/2006, 16h02
  2. probléme avec l'attribut "align"
    Par imane_bennouna dans le forum Struts 1
    Réponses: 1
    Dernier message: 12/09/2006, 11h45
  3. [VBA-W] Problème avec l'attribut ReadOnly
    Par neant dans le forum VBA Word
    Réponses: 9
    Dernier message: 18/05/2006, 05h45
  4. Problème avec POE attribut Alias
    Par vodevil dans le forum Modules
    Réponses: 1
    Dernier message: 04/05/2006, 09h05
  5. [Custom Tags 2.0] Problème avec les attributs
    Par uliss dans le forum Taglibs
    Réponses: 1
    Dernier message: 12/02/2006, 22h31

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