Bonjour,
j'ai récemment posé une question similaire, mais ma question était centrée sur un problème spécifique rencontré, et non sur mon problème en général.
Et comme depuis, j'ai remplacé ce problème par d'autres, je reprends mon problème depuis zéro.
Je dispose d'une page avec un ensemble de champs variables (dont certains sont éditables).
Les valeurs dépendent d'une valeur choisie dans une liste déroulante (h:selectone).
Le bean est obligatoirement en scope "request".
Ma question est donc... "comment faire celà"?
J'ai tenté plusieurs méthodes, mais me suis heurté à ma grande relative méconnaissance des mécanismes JSF. En gros, je n'ai jamais réussi à recharger ma page avec les nouvelles valeurs correspondantes au nouveau choix de la liste déroulante...
Le code que j'ai tenté (parmi d'autres qui ne fonctionnaient pas) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <h:selectOneMenu value="#{monBean.currentOffer}" required="true" onchange="this.form.submit();"> <f:selectItems value="#{monBean.allSelectionItems}"/> </h:selectOneMenu>Ici, mes valeurs ne sont pas rechargées.. et mon setter (setCurrentOfferSelection) n'est simplement jamais appelé...
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 /** * The selectable offers */ List<SelectItem> allSelectionItems; /** * The current selection. */ private OfferObject currentOffer; // =============== INIT =============================== @PostConstruct public void initProfileBean() { List <OfferObject> allOfferObjects = offerService.getAllOffers(); allOffersItems = new ArrayList<SelectItem>(); for (OfferObject offer : allOfferObjects) { allOffersItems.add(new SelectItem( offer.getId(),offer.getName() )); } currentOffer = allOfferObjects.get(0); } // =============== Getters / Setter =============================== public int getCurrentOfferSelection() { return currentOffer.getId(); } public void setCurrentOfferSelection(int currentOfferSelection) { this.currentOffer = offerService.getById(currentOfferSelection); }}
Si vous avez des idées, je vous en remercie d'avance.. et d'ici là, merci déjà de m'avoir lu jusqu'ici.
Partager