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 :

Rafraîchissement combobox suite à un onchange="submit()"


Sujet :

JSF Java

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Par défaut
    Composant lançant le rafraîchissement de la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:selectOneMenu value="#{controller.schedule.id}" onchange="submit();" valueChangeListener="#{controller.updateValue}">
          <f:selectItems value="#{controller.scheduleList}"/>
    </h:selectOneMenu>
    Méthode updateValue() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void updateValue(ValueChangeEvent valueChangeEvent) {
            System.out.println(" --- updateValue --- ");
            if (valueChangeEvent.getNewValue() != null) {
                deduceInformation(new Integer(valueChangeEvent.getNewValue().toString()));
            }
        }
    Méthode deduceInformation() lancé par updateValue() :
    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
    public void deduceInformation (int scheduleId) {
            Office office = null;
            schedule = scheduleService.get(scheduleId);
            if (schedule.getItineraryList() != null && schedule.getItineraryList().size() > 0) {
                for (Itinerary eachItinerary : schedule.getItineraryList()) {
                        office = eachItinerary.getOffice();
                        if (eachItinerary.getFirstOffice() == 1) {
                            firstOfficeId = office.getId();
                        } else {
                            getOfficeList().add(office);
                        }
     
                }
            }
            // Refresh table
            dataModel = null;
        }
    Composant impacté par la méthode deduceInformation() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <h:outputText value="#{properties.FIRST_OFFICE}"/><br/>
    <h:selectOneMenu value="#{controller.firstOfficeId}">
         <f:selectItems value="#{controller.officeList}"/>
    </h:selectOneMenu>
    Ce dernier composant est maintenant bindé à un Integer.

  2. #22
    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
    tu n'a pas un immediate qui traine quelque part??
    Sinon ajoute:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FacesContext.getCurrentInstance().renderResponse();
    à la fin de la méthode du listener.

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FacesContext.getCurrentInstance().renderResponse();
    Ce code est l'équivalent de l'attribut immediate="true"? J'avais déjà essayé avec.
    J'ai essayé ton code sans succès.

  4. #24
    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 scorplayer Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FacesContext.getCurrentInstance().renderResponse();
    Ce code est l'équivalent de l'attribut immediate="true"? J'avais déjà essayé avec.
    J'ai essayé ton code sans succès.
    le renderResponse pour forcer le passage par la phase Update Model lorsque le composant est avec immediate true, dans ton cas elle ne sert à rien.

    Sinon ajoute un bindind à ton selectOneMenu et dans le listener tu modifie la valeur directyement dans le binding:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htmlSelectOneMenu.setValue(newValue);
    J'ai testé et ça marche

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Par défaut
    Je n'ai jamais utilisé l'attribut binding. Quel est la différence entre les attributs binding et value? Peut-on les utiliser tous les 2 en même temps? Quel type de donnée doit-on avoir dans binding?

  6. #26
    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
    le binding permet de contrôler le composant en java, il sert généralement à générer le composant dans le backing bean. il est conseillé de l'utiliser dans un bean en scope request.
    le type de la valeur doit être HtmlSelectOneMenu pour le selectItem.

  7. #27
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Par défaut
    Peut-on utiliser l'attribut binding avec l'attribut value? Ou c'est soit l'un, soit l'autre?

  8. #28
    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 scorplayer Voir le message
    Peut-on utiliser l'attribut binding avec l'attribut value? Ou c'est soit l'un, soit l'autre?
    seul le binding est nécessaire.

  9. #29
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Par défaut
    Un grand merci pour ta patience et tes explications Sniper37

    J'utilise les 2 attributs finalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <h:outputText value="#{properties.FIRST_OFFICE}"/><br/>
    <h:selectOneMenu value="#{controller.firstOfficeId}" binding="#{controller.firstOfficeSelectOneMenu}">
         <f:selectItems value="#{controller.officeList}"/>
    </h:selectOneMenu>

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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