Bonjour,

J'ai une question concernant l'attribut valueChangeListener a l'intérieur d'une balise h:selectOneMenu. Dans plusieurs de mes pages, je posséde une liste et suivant la valeur de cette liste le reste de la page est mise a jour. Lorsque j'accède à ma page (associée à un bean request) la valeur par défaut est attribuée à la liste et le contenu de la page correspont bien à se qui est associée à cette valeur. Si je choisi un autre élément de la liste alors la valeur de la liste est bien mise à jour et également le reste du contenu. Si ensuite je sélectionne à nouveau la première valeur (celle par defaut) alors la liste affiche cette valeur mais le reste de la page n'est pas mis à jour.

Je n'arrive pas a comprendre pourquoi. Je pensais à une erreur dans mon code mais se phénome est présent dans toutes les listes.

voici un exemple de déclaration de liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<h:selectOneMenu valueChangeListener="#{CreateApplicatifs.applicationValueChange}" 
                                onchange="submit();" value="#{CreateApplicatifs.applicationId}">
                                    <f:selectItems value="#{CreateApplicatifs.applications}"/>
                                </h:selectOneMenu>
voici ma fonction appelée lorsque la valeur change :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
public void applicationValueChange(final ValueChangeEvent event) {
        setApplicationId((Long) event.getNewValue());
        getSessionBean().logUserAction("new value: " + event.getNewValue());
        loadParametersList();
    }
voici mon constructeur:
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
 
public CreateApplicatifs() throws NamingException {
        loadApplicationsOptions();
        loadParametersList();
    }
 
@SuppressWarnings("unchecked")
    private void loadApplicationsOptions() {
        this.applications.clear();
        final Long acceptorId = getSessionBean().getAcceptorId();
        final List<TransactionalRoute> routes; // liste des routes
 
        for (final TransactionalRoute route : routes) {
              this.applications.add(new SelectItem(route.getId(), route.getLabel()));
        }
    }
 
@SuppressWarnings("unchecked")
    private void loadParametersList() {
        ParameterSetTemplate template;
        if (null != getCurrentRoute()) {
            template = getCurrentRoute().getApplicationProcessor().getApplicativeParameterTemplate();
        }
        parametersUtils.prepareGridWithParameterValues(gridParametersType);
    }
Merci pour votre aide