Bonjour,

donc en résumé rapide j'ai des valueChangeListener sur des listes pour permettre d'affiner une recherche :
catégorie [liste] -> sous-catégorie [liste]-> période [deux dates]
le soucis est que pour ma période les dates ne changent jamais alors que la base de données est bien interrogé et les bonne périodes sont remontés jusqu'à mon bean.

Après quelques recherches j'ai découvert que ma méthode appelé par le valueChangeListener était invoquée au moment de la phase de validation... Donc quand on modifie la sous-catégorie, les champs dates sont mis à jour avec les bonnes valeurs puis vient la phase de maj du modele et les dates sont écrasées...

Je pensais que les évènements étaient invoqué au moment de la phase Invoke Application Logic, ai-je oublié quelque chose ?

donc le code ressemble à ça :
la page JSF
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<h:selectOneMenu value="#{critereBean.parametre}"
valueChangeListener="#{critereBean.parametreChangement}" 
onchange="submit()">
<f:selectItems value="#{critereBean.liste_parametre}"/>
</h:selectOneMenu>
 
<h:selectOneMenu value="#{critereBean.produit}"
valueChangeListener="#{critereBean.produitChangement}" 
onchange="submit()">
<f:selectItems value="#{critereBean.liste_produit}"/>
</h:selectOneMenu>
et une des implémentation des changeListener au niveau du bean :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
	public void parametreChangement(ValueChangeEvent even) {
		parametre = (Integer) even.getNewValue();
		majProduit();
		majGrille();
		majDate();
	}
et seul le contenu de Date est écrasé, je n'ai pas de problème sur produit et grille qui sont des listes...

La trace est la suivante :
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
49
50
51
52
53
54
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE RESTORE_VIEW(1)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE RESTORE_VIEW(1)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER RESTORE_VIEW(1)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER RESTORE_VIEW(1)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE APPLY_REQUEST_VALUES(2)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE APPLY_REQUEST_VALUES(2)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER APPLY_REQUEST_VALUES(2)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER APPLY_REQUEST_VALUES(2)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE PROCESS_VALIDATIONS(3)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE PROCESS_VALIDATIONS(3)
// NOTA la il appelle la fonction liée au valueChange...
[http-8080-Processor24] DEBUG maj produit
[http-8080-Processor24] DEBUG maj grille
[http-8080-Processor24] DEBUG maj date
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER PROCESS_VALIDATIONS(3)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER PROCESS_VALIDATIONS(3)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE UPDATE_MODEL_VALUES(4)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE UPDATE_MODEL_VALUES(4)
[http-8080-Processor24] DEBUG set begdate :: 1998-06-22 to 1998-04-09
// NOTA : ici le probleme. 1998-06-22 était la nouvelle date à afficher....
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER UPDATE_MODEL_VALUES(4)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER UPDATE_MODEL_VALUES(4)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE INVOKE_APPLICATION(5)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE INVOKE_APPLICATION(5)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER INVOKE_APPLICATION(5)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER INVOKE_APPLICATION(5)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE RENDER_RESPONSE(6)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker beforePhase
INFO: BEFORE RENDER_RESPONSE(6)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER RENDER_RESPONSE(6)
13 mars 2007 15:28:04 org.exadel.jsf.PhaseTracker afterPhase
INFO: AFTER RENDER_RESPONSE(6)