Bonjour,
deux petites questions:
1) Dans le contexte de la réalisation d'un "JSF custom component" consistant en un "drop-down" dans une page JSP. Le contenu à afficher provient d'un Service, et donc je ne songeais pas créer un "binding" dans le Tag. Par contre je dois passer un paramètre qui indique quel type de code afficher, et aussi l'item sélectionné.
J'ai peut être mal lu la doc JSF mais comment on fait pour retrouver la valeur sélectionnée par l'utilisateur ensuite ?
Est-ce que c'est en ajoutant une action (ex. onChange) au Tag, en lui associant une méthode dans le backing bean ?
Est-ce que ce serait mieux de créer un genre de "binding" ?
Autre ?
2) Dans l'implémentation de départ, UIParametrage étend UISelectOne. Il existe d'autres alternatives, comme faire hériter le composant de javax.faces.component.html.HtmlSelectOneMenu ou bien faire hériter le Tag de com.sun.faces.taglib.html_basic.SelectOneListBox, je me questionne à savoir quelle sont les avantages de ces approches par rapport à simplement faire étendre le composant de UISelectOne ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <%@taglib uri="/WEB-INF/tld/taglibs-test.tld" prefix="te"%> <te:Parametrage code="AFFICHAGE_LISTE" parametreSelectionne="#{navigationBean.itemSelectionne}" id="listeAffichage" style="width: 150px"> </te:Parametrage>En passant, le forum ici est pas mal cool!
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 public class UIParametrage extends UISelectOne { public static final String COMPONENT_TYPE = "UIParametrage"; public void encodeBegin(FacesContext context) throws IOException { ResponseWriter writer = context.getResponseWriter(); writer.startElement("select", this); } public void encodeEnd(FacesContext context) throws IOException { ResponseWriter writer = context.getResponseWriter(); writer.endElement("select"); } public void encodeChildren(FacesContext context) throws IOException { ResponseWriter writer = context.getResponseWriter(); String code = (String)getAttributes().get("code"); String parametreSelectionne = (String)getAttributes().get("parametreSelectionne"); ParametrageBean parametrageBean = new ParametrageBean(); // obtenu via l'appel a un Service List listeValeurs = parametrageBean.getListeValeur(code); Iterator iterValeurs = listeValeurs.iterator(); for(int i = 0; i < listeValeurs.size(); i++) { Valeur valeur = (Valeur) iterValeurs.next(); writer.startElement("option", this); writer.writeAttribute("value", valeur.getCode(), null); if (parametreSelectionne.equals(valeur.getCode())){ writer.writeAttribute("selected", "selected", null); } writer.write(valeur.getDescription()); writer.endElement("option"); } } public boolean getRendersChildren() { return true; } }![]()
Partager