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 :

checkbox & logic iterate


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 11
    Points
    11
    Par défaut checkbox & logic iterate
    Bonjour à tous,

    je développe un module avec struts dont lequel je dois récupérer une liste de chechbox dynamiques.
    pour cela g utilisé la balise logic iterate de struts comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <logic:iterate id="item" name="contact">
    					<tr>
    						<td><bean:write name="item" property="designationTypeContact"/></td>
     
    						<td><html:multibox property="cBL_Boxes" value="true" /></td>
    					</tr>
    				</logic:iterate>
    et dans la Actionform

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
           private String cBL_Boxes;
     
           public String getCBL_Boxes()
    	{
    		return cBL_Boxes;
    	}
    	public void setCBL_Boxes(String checkb)
    	{
    		this.cBL_Boxes = checkb;
    	}
    mais ceci ne marche pas il me sorte une exception:

    javax.servlet.ServletException: No getter method for property cBL_Boxes of bean org.apache.struts.taglib.html.BEAN
    je ne comprends pas pourquoi!!

    est ce que quelqu'un a une idée comment résoudre ce blem ou s'il y'en a d'autres solutions pour avoir une liste des checkbox dynamiques.

    Merci les amis

  2. #2
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    Ca renvoie pas un tableau les multibox ?

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    no

    ça m'affiche 1 exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    No getter method available for property cBL_Boxes for bean under name org.apache.struts.taglib.html.BEAN

  4. #4
    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
    remika a raison.

    cBL_Boxes doit être de type String[].

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    j'ai pas rendu compte.

    Vous avez raison.

    Merci Remika et c_nvy

    Salut

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Re salut

    j'ai une autre question;

    comment récupérer la liste des des checkbox coché dans mon multibox !!
    est ce que j'aurais besoin de créer un setter/getter pour lé cases séléctionnées?!!

  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
    Dans l'Action exécutée au submit du formulaire, il suffit d'appeler le getter correspondant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm=(TonActionForm) form ;
    String[] cblBoxes=tonAction.getCBL_Boxes() ;

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Salut,

    merci c_nvy, oui c ce que j'ai fait, le problème ce que je veux insérer les id des checkbox récupéré dans une table de ma BD.

    dans ma jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <logic:iterate id="item" name="Emploi">
      <html:multibox property="CBL_TypeEmploi" value="true">
       <bean:write name="item" property="idTypeEmploi"/>
        </html:multibox>
        <bean:write name="item" property="designationTypeEmploi"/				<br/></logic:iterate>
    dans mon action de submit j'ai mit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
             int[] typesEmploi = candidatEmploiForm.getCBL_TypeEmploi();
                TypeEmploi typeEmploi = new TypeEmploi();
    		List emploi = typeEmploi.ObtenirListeTypeEmploi();
     
    		for(int i=0; i<emploi.size(); i++)
    		{
     
    			type.setIdTypeEmploi((int)typesEmploi[i]);
    		}
    ce que ne je ne comprends pa: c'est que quand je coche toutes les cases existantes ( créer par multibox) le forward passe mais qd je vérifie ma BD je trouve qu'une seule valeur se rajoute mais avec la valeurs 0 (déjà là il ya un problème c que on y insère pa la valeur de ttes les case coché).
    et quand je coche un nombre inférieur au nombre de case à cocher ceci génère une exception voici la trace:

    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
     
    java.lang.ArrayIndexOutOfBoundsException: 1
    at com.mycompany.struts.action.CandidatCVEmploiAction.execute(CandidatCVEmploiAction.java:71)
    	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    Si quelqu'un peut me guider pour trouver ou est l'erreur, parceke là je commence à sécher .

    NB. j'ai changer en int[] parce ke je veux inséré des id.

  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
    Alors, déjà, enlève le value="true" dans le tag html:multibox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:multibox property="CBL_TypeEmploi">
       <bean:write name="item" property="idTypeEmploi"/>
    </html:multibox>
    Ensuite, initialise le tableau dans la méthode reset de l'ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void reset(ActionMapping mapping, HttpServletRequest request)
    {
       this.CBL_TypeEmploi=new int[0] ;
    }
    Et enfin, il faut savoir que dans le tableau CBL_TypeEmploi, tu n'auras des valeurs que pour les éléments cochés.
    Par exemple, si tu coches 3 checkbox, ton tableau aura trois éléments, soit les trois valeurs d'idTypeEmploi correspondantes aux checkbox cochées.
    Il faut donc revoir ton code de mise à jour.

  10. #10
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Merci c_nvy; ça marche nikel maintenant

    j'ai enlevé le value="true".
    et j'ai initialisé le tableau dans la méthode reset.

    et pour le code de submit j'a fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int[] typesEmploi = candidatEmploiForm.getCBL_TypeEmploi();
    int taille= this.typesEmploi.length;
     
    for(int i=0; i<taille ; i++)
    {
    type.setIdTypeEmploi(typesEmploi[i]);
    type_emploi_cvDAO dao = new type_emploi_cvDAO();
    Transaction tx = dao.getSession().beginTransaction();
    dao.save(type);
    tx.commit();
    dao.getSession().close();	
    }
    il fallait écrire le code d'insertion dans la boucle.
    aussi, le nombre sur lequel je boucler avant n'était pas bon.

    Merci

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

Discussions similaires

  1. Imbriquer des logic:iterate
    Par lalou33 dans le forum Struts 1
    Réponses: 4
    Dernier message: 16/06/2004, 10h31
  2. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39
  3. [EJB2.1 Entity] [BMP] [Struts] Problème avec <logic:iterate>
    Par romain3395 dans le forum Java EE
    Réponses: 2
    Dernier message: 07/06/2004, 10h12
  4. [struts][iterate] problème logic:iterate avec un Vector
    Par jaimepasteevy dans le forum Struts 1
    Réponses: 9
    Dernier message: 31/03/2004, 18h05
  5. [Struts] logic:iterate avec un Vector
    Par laurentb dans le forum Struts 1
    Réponses: 18
    Dernier message: 03/03/2004, 14h42

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