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 :
voici ma fonction appelée lorsque la valeur change :
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 mon constructeur:
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(); }
Merci pour votre aide
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); }
Partager