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] Récupération des valeurs de checkbox


Sujet :

Struts 1 Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut [checkbox] Récupération des valeurs de checkbox
    Je voudrai récupérer l'ensemble des valeurs de checkbox dans une page jsp et les utiliser dans une action.
    la portion de code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <logic:iterate id="ligne" name="liste">
    <tr>
      <td><bean:write name="ligne" property="nom"/></td>
      <td><bean:write name="ligne" property="prenom"/></td>
      <td><input type="checkbox" name="choix" value="<bean:write name="ligne" property="nom"/>"/></td>
    </tr>
    </logic:iterate>
    <a href="/prjTest/test.do">Testet</a>
    ..
    Au niveau de l'action test je veux recuperer l'ensemble des valeurs de choix.
    Si je fais pour une seule valeur ca marche mais que faire pour récuperer l'ensemble des valeurs pour plusieurs checkbox cochés

    merciu

    Balises [Code] rajoutées par Ricky81
    Merci d'y penser à l'avenir

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Tu devrais utiliser la taglib html de struts :

    au lieu de <input type ...
    tu devrais mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:checkBox property="choix"/>
    Et dans ton objet Form correspondant au formulaire de la page tu aurais un attribut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private String[]  choix;
    avec les accesseur correspondant !!

    A partir de la dans ton action tu aura ce qu'il te faut dans l'attribut choix de ton objet Form !!

    Ceci dit j'ai pas fais ca recemment mais il me semble que c'est comme ca que ca marche !!
    UML avec VIOLET

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2003
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 105
    Points : 107
    Points
    107
    Par défaut
    J'avais eu un pb de ce genre et si je me souviens bien j'suis passé par un tableau de boolean pour récupérer mes valeurs de mes cases à cocher (et effectivement il faut passer par le <html:checkbox> c'est mieux...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    boolean[] tabCheckBox;
    Faut que je jettes un coup d'oeil dans mon ancien code pour vérifier...mais je crois que je suis pas loin!

    voili voila
    "Plus on fait de conneries, moins on en aura à faire...."

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    tu dois pouvoir utiliser le tableau de string si tu ajoute une value a chaque checkbox si la case a cocher est cocher la value est renvoyé dans le tableau de String
    UML avec VIOLET

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2003
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 105
    Points : 107
    Points
    107
    Par défaut
    Je viens de regarder effectivement j'avais utilisé un tableau de String (et pas Boolean[] ...)
    "Plus on fait de conneries, moins on en aura à faire...."

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Dans ma page jsp dois je définir les balises <html:form>?
    car il me genere cette erreur :
    Cannot find bean org.apache.struts.taglib.html.BEAN in any scope

    j'ai défini le formbean comme ca :

    String [] idChoix;
    static int i = 0;

    void setIdChoix(String c){
    idChoix[i++] = c;
    }

    public String[] getIdChoix(){
    return idChoix;
    }
    ...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    oui tu dois ajouter la balise

    <html:form action="monActionDansStrutsConfig">
    et dans le struts config tu dois specifié l'actionForm a associé a l'action
    UML avec VIOLET

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 103
    Points : 92
    Points
    92
    Par défaut et le multibox ?
    Tu pourrais également utiliser la multibox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:multibox property="choix" />
    Struts mappe directement cela avec une String[] choix dans le form.

    Par contre, j'ai eu des problèmes en utilisant cela avec des versions récentes de Tomcat (j'utilise donc Tomcat 4.0.3).
    Pensez à mettre quand vous avez obtenu la réponse à votre question.

  9. #9
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut [résolu]
    Merci à tous ceux qui m'ont bien voulu m'aider.
    J'ai cas même utilisé le <input type=checkbox> à la place du <html:checkbox>
    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
    <html:form action="/majprofil">
    ....
    <% int i=0; %>
    <logic:iterate name="list" id="liste" type="com.gugr.beans.TProfil">
                 <% i++; if(i%2==0){%>
                              <tr class="lignePaire">
                 <%} else {%>
                              <tr class="ligneImpaire">
                 <%}%>	 
    <td>
    <input type="checkbox" name="idChoix" value="<bean:write name="liste" property="codeprofil"/>"/>
                </td>
    <td><bean:write name="liste" property="codeprofil"/></td>			
    <td><bean:write name="liste" property="libelleprofil"/></td>
    			</tr>		
    ...
    </logic:iterate>
    ..
    <input type="submit" name="submit1" value="Modifier" style="visibility:hidden;display:none" onclick="this.form.method.value='modifier'">
              <input type="submit" name="submit2" value="Supprimer" style="visibility:hidden;display:none" onclick="this.form.method.value='supprimer'">
    <a href="javascript:document.forms(0).submit1.click()">
    Modifier</a>&nbsp;&nbsp;|&nbsp;&nbsp;
    <a href="javascript:document.forms(0).submit2.click()" onclick="return (confirm('Voulez-vous vraiment supprimer cet enregistrement ?'))">
    Supprimer</a>
    </html:form>
    ...
    j'ai défini un form bean avec un tableau de string pour récupérer les valeurs des choix.

    Enfin j'ai défini deux liens modifier et supprimer qui valident la soumission du formulaire en mettant deux boutons submit cachés à true avec du javascript.
    un champ hidden me permet de selectionner la méthode approprié vers une DispatchAction ou il ya les méthodes modifier et supprimer
    ...
    La dispatchAction
    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
     
    //Modification
     String choix[] = request.getParameterValues("idChoix");
    	  if(choix != null){
    	   if(choix.length != 1){
    	   	//Message d'erreur
    	   	  ActionErrors errors = new ActionErrors();
    		  errors.add("choix",
        	  new ActionError("Profil.modification.choix","choix"));
    		  saveErrors(request, errors);
    		  return mapping.findForward("majprofilsupprOK");
    	   }else {
    //modification
    }
     
    //Suppression
    String choix[] = request.getParameterValues("idChoix");
    		if(choix != null){
    		 for(int i=0;i<choix.length;i++){
                 // suppression des éléments cochés
                  }
    Merci once again

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Bonjour ,

    mois aussi je travaille sur une grille (de suppression et de modification),j'aimerais bien ajouter des cases à coucher pour supprimer plusieurs tuples simultanément,

    Pouvez vous m'expliquer la démarche (le form bean ,Actionsupprimer...)!!
    Pouvez vous me donner SVP ta méthode "supprimer" ?!!

    d'avance merci
    Cordialement

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Re-Bonjour ,

    voici ce que j'ai fait jusqu'à maintenant :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <%@taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html" %>
    <%@taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="bean" %>
    <%@taglib uri="/WEB-INF/tld/struts-logic.tld" prefix="logic"%>
     
    <html>
     
    <head>
    <title>Affichage</title>
    </head>
    <body>
     
    <table border="0" width="80%">
    <tr>
    <th>
    <html:form action="Affiche.do" method="get">
    <html:submit value="Afficher"></html:submit>
     
    </html:form>
     
    </th>
     
    <th>
     
     
    </th>
     
     
     
    </tr>
     
     
    </table>
     
     
     
     
     
     
     
     
     
    <!------------------------------------------------------------  ------------>
     
     
    <table border="1" width="80%">
    <tr>
    <th>ID</th><th>NOM</th><th>PRENOM</th><th>SELECTION</th>
    </tr>
     
    <html:form action="SupprimerUser.do">
     
    <logic:iterate id="usr"  name="lf" property="users">
     
     
     
     
     
     
    <tr>
     
    <td><bean:write name="usr" property="idUser"/></td>
    <td><bean:write name="usr" property="nom"/></td>
    <td><bean:write name="usr" property="prenom"/></td>
     
    <td><input type="checkbox" name="idChoix" value="<bean:write name="usr" property="idUser"/>"/></td>
     
     
    </tr>
     
     
     
     
    </logic:iterate>
    <html:submit value="supprimer"></html:submit>
    </html:form>
    </table>
     
     
    </body>
     
    </html>


    Et voici l'Action supprimer :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    package pres;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    import Dao.Metier;
     
    public class supprimerAction extends Action{
     
     
    public ActionForward execute(ActionMapping mapping, 
     
    		ActionForm form,
     
    		HttpServletRequest request,
     
    		HttpServletResponse response)
     
    		throws Exception {
     
    	Metier m=new Metier();
     
    	/*String idUser=request.getParameter("idUser");
     
    	//if(cheks != null){
          //  for (int i=0 ; i < cheks.length ; i++){
            	
            	//String idUser=request.getParameter("idUser");
            	//Long id=Long.valueOf(idUser) ;
            	//m.supprimer(id);
           // }
    	//}else
    		//System.out.println("aaa");
    	//String idUser=request.getParameter("idUser");
     
    	if ( idUser != null ) 
    	{
    	   Long id=Long.valueOf(idUser) ;
    	   m.supprimer(id);
    	}*/
     
     
    	String choix[] = request.getParameterValues("idChoix");	
    	if(choix != null){
    		 for(int i=0;i<choix.length;i++){
     
    			 String idUser=request.getParameter("idUser");
    			 Long id=Long.valueOf(idUser) ;
    			 m.supprimer(id);
    		 }
    		 }
     
     
    	return mapping.findForward("listusers");
    }
     
    }
    Merci d'avance

  12. #12
    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
    Remplace le tag input de type checkbox par un tag Struts html:multibox comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:multibox property="choix">
      <bean:write name="usr" property="idUser"/>
    </html:multibox>
    Définit la propriété choix de type String[] dans l'ActionForm avec getter et setter et initialise-là à une taille de zero dans la méthode reset de l'ActionForm comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void reset(ActionMapping mapping, HttpServletRequest request)
    {
       this.choix=new String[0];
    }
    et pour récupérer les éléments cochés, code ceci dans l'Action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm=(TonActionForm) form ;
    String choix[] = tonActionForm.getChoix() ;
    Modératrice Java - Struts, Servlets/JSP, ...

  13. #13
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Merci d'avance pour ta réponse ,

    Désolé, J’ai fait ce que vous avez cité là-dessus, mais le problème qui se pose maintenant est du à la méthode supprimer, je ne sais pas s’elle est bien faite !!

    Voici la méthode :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void supprimer(Long idUser){
     
            Session session=HibernateUtil.getSessionFactory().getCurrentSession();
            session.beginTransaction();
            User u=(User) session.load(User.class, idUser);
            session.delete(u);
            session.getTransaction().commit();
        }

    Et je ne sais pas comment utiliser cette méthode !!
    Autrement dit :Comment je vais appeler la méthode !

    Cordialement A+

  14. #14
    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
    Le tableau de String choix contenant les valeurs des idUser cochés, il suffit d'itérer sur ce tableau et de passer en paramètre de la méthode supprimer chaque élément du tableau de String comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    TonActionForm tonActionForm=(TonActionForm) form ;
    String choix[] = tonActionForm.getChoix() ;
    if (choix != null)
    {
       for (int i=0; i<choix.length(); i++)
       {
           	Long idUser=Long.valueOf(choix[i]) ;
           	m.supprimer(idUser);
       }
    }
    Modératrice Java - Struts, Servlets/JSP, ...

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

Discussions similaires

  1. [MySQL] Récupération des valeurs d'une checkbox
    Par atchoum17 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/07/2011, 11h03
  2. [MySQL] Récupération des valeurs des checkbox
    Par Boris56 dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 02/03/2010, 17h37
  3. Réponses: 2
    Dernier message: 14/04/2008, 13h00
  4. Réponses: 5
    Dernier message: 03/05/2006, 10h27
  5. [struts] [checkbox] récupération des valeurs cochées
    Par abourell dans le forum Struts 1
    Réponses: 16
    Dernier message: 10/06/2005, 20h58

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