Bonjour,
Je travaille avec JSF 2 et un peu de Ajax
J'ai deux combos. Le choix du premier combo permet de choisir les valeurs pour remplir de deuxième. J'arrive à remplir le combo mais lorsque j'envoie le form, le bean n'arrive pas à mapper la valeur du deuxième combo et me retourne toujours null.
Mes deux combos sont
J'ai essayé avec un listener, avec un value pour le combo; avec un HtmlSelectOneMenu comme binding, mais j'arrive pas à afficher aach.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <h:selectOneMenu required="true" id="thread" value="#{bRebatche.thread}" title="Thread"> <f:selectItems value="#{bSuspicious.lstThreads}" /> <f:ajax render="qoAvant" /> </h:selectOneMenu> <h:selectOneMenu id="qoAvant" value="#{bRebatche.qoAvant}" binding="#{bRebatche.cmbQualiteAvant}" disabled="#{bRebatche.qoAvantDisabled}" required="true" valueChangeListener="#{bRebatche.changeQo}" requiredMessage="Erreur Validation. Qualité Avant. Valuer requise" title="Qualité avant" style="width: 150" immediate="true"> <f:selectItems value="#{bRebatche.codes}" /> </h:selectOneMenu>
Mon bean..
Please... si y a qqun qui peut m'aider... tout fonctionnait bien jusqu'à ce qu'on m'a demandé de faire la relation entre ces deux combos...
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 @ManagedBean public class BRebatche { private transient HtmlSelectOneMenu cmbQualiteAvant = new HtmlSelectOneMenu(); private transient HtmlSelectOneMenu cmbThread = new HtmlSelectOneMenu(); private static List<Suspicious> lstRebatche = null; public String getThread() { return thread; } public void setThread(String thread) { this.thread = thread; isQoAvantDisabled = (this.thread==null); } public boolean isQoAvantDisabled() { return isQoAvantDisabled; } public void setQoAvantDisabled(boolean isQoAvantDisabled) { this.isQoAvantDisabled = isQoAvantDisabled; } public String getQoAvant() { return qoAvant; } public void setQoAvant(String qoAvant) { this.qoAvant = qoAvant; } public void changeQo(ValueChangeEvent event) { System.out.println(event.getNewValue().toString()); qoAvant = event.getNewValue().toString(); } public List<SelectItem> getCodes() { List<SelectItem> items = new ArrayList<SelectItem>(); items.add(new SelectItem(null, "Choisissez")); if(!isQoAvantDisabled && (thread != null)) { if("4".equals(thread)){ //rien pour l'instant }else{//Liste affiché items = BSuspicious.getLstMelange(); } } return items; } public void saveRegister(){ //ICI J'AI TOUT NULL System.out.println(this.qoAvant); System.out.println(this.cmbQualiteApres.getValue()); }
Partager