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 :

[Struts débutant] liste déroulante


Sujet :

Struts 1 Java

  1. #1
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Points : 201
    Points
    201
    Par défaut [Struts débutant] liste déroulante
    voila, j'ai un ejb qui me fournit une arraylist, et je veux que les elements de cette arrayliste s'affiche dans une liste deroulante sauf que ca me renvoit cette exception :
    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
     
    javax.servlet.jsp.JspException: Cannot find bean under name org.apache.struts.taglib.html.BEAN
        org.apache.struts.taglib.html.SelectTag.calculateMatchValues(SelectTag.java:240)
        org.apache.struts.taglib.html.SelectTag.doStartTag(SelectTag.java:200)
        org.apache.jsp.candidat.inscCand_jsp._jspx_meth_html_select_0(inscCand_jsp.java:127)
        org.apache.jsp.candidat.inscCand_jsp._jspx_meth_html_html_0(inscCand_jsp.java:101)
        org.apache.jsp.candidat.inscCand_jsp._jspService(inscCand_jsp.java:69)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
        org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
        org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
        org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
        org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
        org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
        org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    voici mon struts config :
    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
     
        <form-beans>
            <form-bean
                name="inscCandForm"
                type="m.candidat.actionform.TestForm"> 
            </form-bean>
     
        </form-beans>
     
        <action-mappings>
     
            <action
                path="/ajoutCandidat"
                type="m.candidat.action.InscCandidatAction"
                name="inscCandForm"
                scope="request"
                attribute="testForm"
                input="/candidat/accueilCandidat.jsp">
                    <forward name="success" path="/candidat/inscCand.jsp"></forward>
            </action>
     
        </action-mappings>
    voici ma classe Action :
    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
     
    public class InscCandidatAction extends Action {    
     
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response) throws Exception {
            commonSessionHome = getHome();
            myCSession = commonSessionHome.create();
            ArrayList liste = myCSession.getAllCivilite();
            ArrayList listeCivi = new ArrayList();
     
            for(int i=0; i<liste.size(); i++) {
                CiviliteData cd = (CiviliteData) liste.get(i);
                listeCivi.add(new LabelValueBean(cd.getId_civilite(),cd.getDetail_civilite()));
            }
            request.setAttribute("civilite",listeCivi);
            return mapping.findForward("success");        
        }
     
            ...
    }
    et voici mes pages jsp :

    la jsp : accueilCandidat.jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <%@ taglib uri="/tags/struts-html" prefix="html"%>
     
    <html:html>
    <head>
    <title>Page Affiche</title>
    </head>
    <body bgcolor="white">
    <html:link action="/ajoutCandidat.do">Ouvrir un compte</html:link>
    </body>
    </html:html>
    la jsp : inscCand.jsp
    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
     
    <%@ taglib uri="/tags/struts-bean" prefix="bean"%>
    <%@ taglib uri="/tags/struts-html" prefix="html"%>
    <%@ taglib uri="/tags/struts-logic" prefix="logic"%>
     
    <html:html>
    <head>
    <title>Page Affiche</title>
    </head>
    <body bgcolor="white">
        <!--  bean:define id="civi" scope="request" property="listeCivi"/-->
        <html:select property="listeCivilite">
            <html:optionsCollection name="testForm"
                property="listeCivi" value="value" label="label"/>
        </html:select>
    </body>
    </html:html>
    si quelqu'un sait d'ou vient le probleme...

    Merci

  2. #2
    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
    Dans ton Action, tu mets ton ArrrayList listeCivi dans le scope request sous le nom civilite via ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("civilite",listeCivi);
    Donc, dans ta jsp, il faut coder civilite et non listeCivi comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        <html:select property="listeCivilite">
            <html:optionsCollection property="civilite" value="value" label="label"/>
        </html:select>

  3. #3
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Points : 201
    Points
    201
    Par défaut
    Merci pour ton aide
    voila j'ai mis ce que t'as dis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <html:select property="listeCivilite">
            <html:optionsCollection name="testForm"
                property="civilite" value="value" label="label"/>
        </html:select>
    mais il me balance ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    org.apache.jasper.JasperException: Exception in JSP: /candidat/inscCand.jsp:11
     
    8: </head>
    9: <body bgcolor="white">
    10: 	<!--  bean:define id="civi" scope="request" property="listeCivi"/-->
    11: 	<html:select property="civilite">
    12: 		<html:optionsCollection name="testForm"
    13: 			property="civilite" value="value" label="label"/>
    14: 	</html:select>
    plus l'exception que j'ai mis dans mon 1er message

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    la valeur du select doit etre un String, par contre optionsCollection prend comme son nom l'indique une Collection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <html:select property="testForm">
     <html:optionsCollection name="listeCivilite"
                property="civilite" value="value" label="label"/>
        </html:select>

  5. #5
    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
    11: <html:select property="civilite">
    Il ne faut pas mettre l'ArrayList civilite dans l'attribut property du html:select mais dans l'attribut property du html:optionsCollection.

    Dans l'attribut property du html:select, tu dois coder la propriété que tu as défini dans ton ActionForm, celle qui contiendra la valeur sélectée, soit un idCivilite.
    Peux-tu me montrer le code de ton ActionForm ?

    De plus, il faut enlever le name="testForm" dans le tag html:optionsCollection.

  6. #6
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Points : 201
    Points
    201
    Par défaut
    l'ActionForm ne sert pas vraiment, je ne sais pas d'ailleurs pkoi je l'ai mis, j'aurais pu me contenter d'un DynaActionForm.

    Voici le code de mon ActionForm :

    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
     
    public class TestForm extends ActionForm {
     
        ArrayList listeCivi = new ArrayList();
     
       ...
     
        public ArrayList getListeCivi() {
            ArrayList liste = new ArrayList();
            try {
                commonSessionHome = getHome();
                myCSession = commonSessionHome.create();
                liste = myCSession.getAllCivilite();
     
            } catch (NamingException e) {
                e.printStackTrace();
            }catch (RemoteException e) {
                e.printStackTrace();
            } catch (CreateException e) {
                e.printStackTrace();
            }
     
            for(int i=0; i<liste.size(); i++) {
                CiviliteData cd = (CiviliteData) liste.get(i);
                listeCivi.add(new LabelValueBean(cd.getId_civilite(),cd.getDetail_civilite()));
            }
            return listeCivi;
        }
     
        public void setListeCivi(ArrayList listeCivi) {
            this.listeCivi = listeCivi;
        }
    }

  7. #7
    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
    Il va bien falloir que tu récupères la valeur sélectée.

    Admettons que dans ta jsp, tu codes ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <html:form action="processCandidat">
       <html:select property="idCivilite">
            <html:optionsCollection property="listeCivi" value="value" label="label"/>
        </html:select>
    </html:form>
    Pour que ça fonctionne, il faut que dans l'ActionForm liée à l'action que j'ai nommé processCandidat, soit défini l'attribut idCivilite avec getter et setter.

    Et listeCivi ton ArrayList que tu peux mettre dans le scope soit via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("listeCivi",listeCivi) ;
    soit via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TestForm testForm = (TestForm) form ;
    testForm.setListeCivi(listeCivi) ;
    Dans ce cas, la méthode getListeCivi de ton ActionForm TestForm doit simplement être codé comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public ArrayList getListeCivi()
    {
      return listeCivi ;
    }
    l'ArrayList étant initialisée via l'Action InscCandidatAction.

    Il faut bien sûr déclarer l'Action de path processCandidat dans le struts-config avec name="inscCandForm" et créer cette Action qui récupérera l'idCivilite sélecté en codant ceci dans la méthode execute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TestForm testForm = (TestForm) form ;
    String idCivilite = testForm.getIdCivilite() ;
    Je ne sais pas si c'est assez clair.

  8. #8
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 303
    Points : 201
    Points
    201
    Par défaut
    Merci Merci 1000 Merci, c'est exactement ca, maintenant ca marche nickel.

    Merci beaucoup

  9. #9
    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
    De rien.
    N'oublie pas le tag

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/06/2006, 16h18
  2. [MySQL] [Débutant] liste déroulante + requette
    Par Amenos dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 27/03/2006, 14h32
  3. [Struts] - débutante - liste déroulante
    Par alexx dans le forum Struts 1
    Réponses: 3
    Dernier message: 18/04/2005, 15h01
  4. Réponses: 10
    Dernier message: 04/05/2004, 16h00
  5. [ JSP ][ Débutant ] Liste déroulante + actualisation de page
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 17/04/2004, 19h51

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