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 :

html:form checkbox String[] récupération [FAQ]


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 98
    Par défaut html:form checkbox String[] récupération
    Bonjour, je développe depuis un certain temps avec java et struts et je viens de remarquer un bogue assez important dans deux de mes applications.

    Voilà, je construit dans une jsp une liste de checkbox dynamiquement à partir d'un xsl. Cette liste se retrouve dans un html:form et elle a son actionForm correspondante. Voici le code source :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <tr>
                    <td>Type de désistement :</td>
                    <td>
                        <a class="ToutSelect" onclick="toutSelect()">Sélectionner tout </a><br/><br/>
    <input type="checkbox" value="3" name="type" style="margin-left:-4px;">Courriel</input><BR/>
    <input type="checkbox" value="2" name="type" style="margin-left:-4px;">Publipostage</input><BR/>
    <input type="checkbox" value="1" name="type" style="margin-left:-4px;">Télémarketing</input><BR/>
                    </td>
                </tr>

    L'attribute name="type" représente un de mes membres dans mon ActionForm qui est une variable de type String[].

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private String msType[] = null;
    Lorsque je soumet mon formulaire une première fois et que je n'ai coché aucun checkbox, la variable msType contient null et c'est parfait comme ça.

    Si j'en coche un, deux, ou peu importe, je peu récupère mes valeurs correctement en fesant dequoi du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    for (int i = 0; i < msType.length;i++) {
                        sTempo = sTempo + msType[i] + ";";
                    }
    qui me donnerais dequoi du genre : 1;2;3 si les trois étaient sélectionnés...

    Par contre, si après avoir validé mon formulaire je m'apercois qu'il y a des erreurs et que je réaffiche le formulaire et que je décoche tout les checkbox en laissant une erreur dans le formulaire (pour le réafficher encore) ma variable msType contient la dernière sélection. Pourtant, elle devrait contenir null puisqu'il n'y a plus de sélection...

    Voici en quelque étape ce que je fait pour ceux qui n'aurait pas compris:
    1-Création d'une erreur dans le numéro de téléphone(par exemple) et sélection des 3 checkbox.
    2-Ma variable msType[] contient les 3 values des checkbox sélectionnés. Réaffichage du formulaire puisque le tel est invalide.
    3-Je laisse l'erreur dans le teléphone et je décoche tout mes checkbox. Le formulaire se réaffiche encore puisque le tel est invalide.
    4-Ma variable msType devrait être null mais elle contient les 3 values auparavant sélectionné..


    Est-ce que quelqu'un a déja eu un problème du genre...

    Si oui merci de me donner un hint. Désolé pour le roman que je viens de pondre

    A+

  2. #2
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Bonjour,

    problème classique : http://java.developpez.com/faq/strut...ox#simplecheck

    Une solution consiste à vider ton tableau dans la méthode reset() de ton form.

  3. #3
    Membre confirmé
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 98
    Par défaut
    Merci de m'avoir répondu mais je suis déja au courant pour vider la variable.

    Le problème c'est que je ne veux pas exécuté le reset car il y a des erreurs dans le formulaire. Je dois donc conserver les données de l'utilisateurs pour les réafficher avec un message d'erreur.

    Le reset vide tout mes variables quand la validation a été un succès, ce qui est correct.

    Le problème c'est que quand je décoche tout mes checkbox, ma variable serait supposé de conserver null au lieu des anciennes valeurs cochées.

    Si j'avais null dans mon ActionForm, je pourrais retourner un message d'erreur au formulaire du genre : Veuillez sélectionner au moin un "checkbox".

    Comprends tu??

    Merci a+

  4. #4
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Bonjour,

    le reset n'est normalement appelé dans le cycle de vie d'un ActionForm qu'avant qu'on le remplisse (en l'occurence entre le moment où on submitte son formulaire et celui où BeanUtils va remplir l'ActionForm). Il n'y a donc à mon sens (sauf cas de formulaire multipages) aucun problème à réinitialiser ton tableau dans reset.

    Sinon, tu peux toujours placer ce bout de code après tes checkbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <input type="hidden" name="type" value="" />
    Ca devrait normalement envoyer une valeur vide et pallier au "non envoi" provoqué par l'absence de coche.

  5. #5
    Membre confirmé
    Administrateur de base de données
    Inscrit en
    Juillet 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2006
    Messages : 98
    Par défaut
    Ouais c'est pas fou ton idée.

    Ça fonctionne bien mais quand il y a des checkbox de coché ça ajoute une ligne vide dans mon tableau. C'est pas dramatique mais quand on aime les trucs bien fait c'est plate

    Entk je vais m'arranger

    Merci encore

    A+

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/10/2007, 10h43
  2. [struts] taglib html:form
    Par lourai dans le forum Struts 1
    Réponses: 5
    Dernier message: 17/03/2005, 16h57
  3. [Struts]HTML:FORM ET HTML:HIDDEN
    Par zurich dans le forum Struts 1
    Réponses: 6
    Dernier message: 07/02/2005, 23h30
  4. request.form & CheckBox
    Par mattmat dans le forum ASP
    Réponses: 6
    Dernier message: 17/11/2004, 17h27
  5. [HTML] Form - champ disabled
    Par freddyboy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/11/2004, 12h14

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