IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Préselectionner un select avec un form-bean ou à la mano ?


Sujet :

Struts 1 Java

  1. #1
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 086
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 086
    Points : 1 961
    Points
    1 961
    Par défaut 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 : 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>
    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 : 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");	
    }
    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 : 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".
    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" />
    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
    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 : 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>
    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.

  2. #2
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 086
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 086
    Points : 1 961
    Points
    1 961
    Par défaut
    Ca y est, j'ai trouvé. Je me reponds. Cela peux toujours servir à quelqu'un.

    Il faut en fait utilisé les balises struts options meme si je construits le combobox manuellement avec une bouche "foreach"


    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}">
    		<html:option value="${p.identifier}">${p.firstName}</html:option>
    	</c:forEach>
    </html:select>
    Et ainsi, je peux utiliser le form-bean pour initialiser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AdmClientForm clientForm = (AdmClientForm) form; 
    clientForm.setCommercialId(clientForm.getCommercialId());

  3. #3
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Pourquoi n'utilises-tu pas tout simplement le tag Struts html:optionsCollection ou html:options à la place du c:forEach :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="commercialId">
    	<html:optionsCollection name="commercial" value="identifier" label="firstName"/>
    </html:select>
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="commercialId">
    	<html:options collection="commercial" property="identifier" labelProperty="firstName"/>
    </html:select>
    Pour info, ceci est écrit dans la FAQ Struts.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/05/2011, 10h45
  2. Réponses: 4
    Dernier message: 28/08/2009, 15h30
  3. Réponses: 4
    Dernier message: 24/10/2007, 10h43
  4. pb de select avec size avec choix multiple
    Par La_picolle dans le forum ASP
    Réponses: 10
    Dernier message: 28/08/2003, 15h21
  5. requete SELECT avec un nombre constant
    Par gurumeditation dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/07/2003, 20h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo