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

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>
J'ai essayé avec un listener, avec un value pour le combo; avec un HtmlSelectOneMenu comme binding, mais j'arrive pas à afficher aach.

Mon bean..


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());
	}
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...