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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Rafraîchissement combobox suite à un onchange="submit()"
    Bonjour à tous,

    A chaque changement de valeur d'une liste déroulante, je souhaite recharger la page. Pour cela j'utilise l'attribut onchange avec la fonction submit() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:selectOneMenu value="#{controller.object.id}" onchange="submit();" valueChangeListener="#{controller.updateValue}">
                                <f:selectItems value="#{controller.itemList}"/>
                            </h:selectOneMenu>
    Le problème est qu'aucune combobox ne prend la valeur du modèle (rafraîchissement?). J'ai fait un test en introduisant un bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:commandButton action="controller.updateValue2"/>
    Et là, toutes les combos prennent les bonnes valeurs. Le rafraîchissement de la page suite à une action sur un bouton a l'air différent d'un rafraîchissement provoqué par un submit javascript. Comment palier à ce problème?
    Comment forcer le rafraîchissement d'une liste déroulante?

    J'utilise JSF 1.2 sans framework complémentaire (ex: pas de richfaces).

    Merci

  2. #2
    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
    Essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     onchange="this.form.submit();"

  3. #3
    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
    J'ai essayé et ça ne change rien

  4. #4
    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 peux montrer le code de la page et de la fonction listener

  5. #5
    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
    Le composant :
    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>
    La 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()));
            }
        }
    La méthode deduceInformation :
    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) {
                            firstOffice = new Office(office.getId());
                        } else {
                            getOfficeList().add(office);
                        }
     
                }
            }
            // Refresh table
            dataModel = null;
        }
    La combo box qui ne se rafraîchit pas est bindé à l'attribut firstOffice.

    Merci Sniper37

  6. #6
    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
    Sniper37, tu vois d'où peut venir le problème? Ou pas d'idée?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

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