Préselectionner un select avec un form-bean ou à la mano ?
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 :
Code:
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> |
Elle construite avec des taglib JSTL. J'aimerais la préselectionner sur une valeur bien définni.
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 :
Code:
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");
} |
La valeur de clientForm.getCommercialId() est bien retourné. Malheureusement queni. Le combobox est réinitilisé.
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:
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".
Code:
1 2 3
| <% ac.crm.database.Test idc = (ac.crm.database.Test) request.getAttribute("id_commercial"); %>
.....
<c:out value="${idc.selectionne}" default="rien" /> |
Je rappelle que "selectionne" est l'attribut de la classe ac.crm.database.Test
Code:
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 :
Code:
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> |
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/
Bref, je suis bloqué que ce soit à la struts ou de manière manuel.