Bonjour
Je développe une application JSF,entre autre, je souhaite effectuer une recherche des salariés affectés à un pays/ville
donc, dans ma page JSP, je dispose d'un panel de recherche avec des listes déroulante liée (quand je change pays, la liste des ville se mets à jours).
on fait,
ma page JSP contient un panel de recherche avec deux liste déroulante liées
- pays: liste déroulante de mes pays de réference(avec un event valueChangeListener)
- ville: liste mise à jour quand je change le pays
Le problème/ comportement de l event: valueChangeListener .../
si je ne change pas le pays(je lance une recherche à vide) la recherche ne se lance pas, il faut que je clique une deuxième fois sur le bouton "rechercher" pour qu'elle se lance.
et si j’enlève event valueChangeListener positionné sur la liste des pays, je n'ai plus le problème de recherche (mais il faut que je garde liste liée)
Env Technique
JSF/MyFaces, template,
quelqu'un pourrait m'aider sur ce problème SVP !!!!
voici mon code:
et la deuxième liste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <ui:define name="body" > <table> <tr> <td><h:outputText value="pays" /></td> <td> <h:selectOneMenu id="pays" value="#{paysListBean.salarieCritere.idPays}" valueChangeListener="#{paysListBean.changerPays}" onchange="submit()" immediate="true"> <f:selectItems id="idItemPays" value="#{paysListBean.paysItems}" /> </h:selectOneMenu> </td>
et voici mon Bean
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <td> <h:outputText value="Ville" /></td> <td> <h:selectOneMenu id="idVille" value="#{paysListBean.salarieCritere.idVille}" > <f:selectItems value="#{paysListBean.villeItems}" /> </h:selectOneMenu> </td> </td>
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 public void changerPays(ValueChangeEvent value) throws TechnicalException, BusinessException { try { Long idPays= Long.valueOf(value.getNewValue().toString()); if (idPays!= null && !idPays.equals(new Long(-1))) { villeItems = new ArrayList<SelectItem>(); villeItems .add(new SelectItem("-1", " ")); List<VilleDto> villes= service.chargerListVilleBy(idPays); if (CollectionUtils.isNotEmpty(villes)) { for (VilleDto dto : ville) { villeItems.add(new SelectItem(dto.getId(), dto.getNom())); } } } }catch (Exception be) {} }
Partager