Bonjour,
Une fois de plus je suis bloquéavec des combox que je n'arrive pas à préselectionner.
Context :
Dans un premier temps, la page JSP charge un combobox à partir des données en base (c'est ok à ce niveau)
puis dans un second temps, lorsque l'on submit, la page est rechargé avec un tableau de résultat (c'est ok aussi) MAIS aussi avec le combobox préselectionné ...
Ma combobox :
Elle construite avec des taglib JSTL. J'aimerais la préselectionner sur une valeur bien définni.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <html:select property="commercialId"> <c:forEach var="p" items="${commercial}"> <option value="${p.identifier}">${p.firstName}</option> </c:forEach> </html:select>
Puis je le faire avec le form-bean qui est rattaché dans l'action ?
Préselection à la Struts
Dans l'action, j'ai essayé de faire un :
La valeur de clientForm.getCommercialId() est bien retourné. Malheureusement queni. Le combobox est réinitilisé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public ActionForward listClient(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { .... AdmClientForm clientForm = (AdmClientForm) form; clientForm.setCommercialId(clientForm.getCommercialId()); .... return mapping.findForward("list"); }
Je me suis donc que c'était peut être normal que je ne puisse pas préselectionner parce que le select n'a pas été totalement construit avec des balises Struts.
Préselection à la mano
Dans mon action, j'ai donc pensé à renvoyer clientForm.getCommercialId à la JSP. J'encapsule l'id du commercial dans la class Test. Je sais cela sert pas à grand chose mais c'est pour un test.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ac.crm.database.Test id_commercial = new Test( clientForm.getCommercialId()); request.setAttribute("id_commercial", id_commercial);
Mais malheureusement, dans ma JSP, je n'arrive pas à recuperer "id_commercial". Cela m'affiche toujours "rien".
Je rappelle que "selectionne" est l'attribut de la classe ac.crm.database.Test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <% ac.crm.database.Test idc = (ac.crm.database.Test) request.getAttribute("id_commercial"); %> ..... <c:out value="${idc.selectionne}" default="rien" />
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class Test { String selectionne; public Test(String selectionne) { this.selectionne = selectionne; } public String getSelectionne() { return selectionne; } public void setSelectionne(String selectionne) { this.selectionne = selectionne; } }
Si je pouvais récupérer la valeur dans la JSP, j'aurais ensuite fait :
Exactement comme on peux voire sur l'exemple du c:if sur cette page du tutoriel jmd chap 51 dans les cours et tutoriels Java : http://java.developpez.com/cours/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <html:select property="commercialId"> <c:forEach var="p" items="${commercial}"> <option value="${p.identifier}" <c:if test="${p.identifier == idc.selectionne}" >selected</c:if> >${p.firstName}</option> </c:forEach> </html:select>
Bref, je suis bloqué que ce soit à la struts ou de manière manuel.
Partager