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] probleme html:checkbox ou multibox


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Points : 22
    Points
    22
    Par défaut [Struts] probleme html:checkbox ou multibox
    bonjour à tous,

    j'ai un soucis avec des html:checkbox.

    en fait, j'ai un form qui se compose de 3 collections plus d'autres champs.
    les collections sont des objects qui possedent les champs suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private	int id;
    private	String name;
    private String item;
    private String product;
    private boolean selected;
    le champ selected est sensé représenter une checkbox => s'il est sur true alors la checkbox est cochée si elle est sur false alors la checkbox n'est pas cochée.

    cela fonctionne tres bien pour l'affichage des données dans la jsp.

    par contre, lorsque je veux modifier l'était d'une checkbox, cela ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <html:form action="/jsp/dockProductListAction.do?action=linkChoiceDckProductFinal" scope="session"  type="be.post.maintenance.view.form.dockProductForm" name="dockProductForm">
      <logic:iterate id="item" name="dockProductForm" property="recipient"> 
       <tr>
       <td><html:checkbox name="item" property="selected" value="true"> 
       </html:checkbox> 
       <bean:write name="item" property="item" /> 
        </td>
    </tr>
     </logic:iterate>
    <button:submit label="update" width="100"/>
    </html:form>

    si je fais submit, le valeur du form ne se mettent pas du tout a jour.

    j'ai essayer des html:multibox mais ca ne change rien.
    je crois que le probleme vient que j'utilise des collections mais je ne vois comment faire pour utiliser autre chose.

    merci de vos conseil

    bruno

  2. #2
    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
    ouii il faut faire une méthode dans ton bean qui remplie les valeurs de la collection à partir de property du bean;

    Struts lors de l'envi de formulaire ne fait que ; bean.setSelected(value);

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    tout d'abord, merci bcp pour le temps que tu me consacre.
    pourrais tu developper un peu car je ne suis pas trop ce que tu veux dire

  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
    je ne comprends pas trop ce que tu veux faire, mais l'iterate plus le checkBox pour un element de l'iterate.. ça risque de ne pas marcher...
    Struts doit faire item.setSelected(value), et c'est pour etre ça qui ne fonctionne pas, tu peux avoir juste une valeur renseignée.

    Pourquoi ne pas faire un form avec des property:selected ... et une méthode appelé lors de l'envoi du formulaire qui récupere ses valeurs et construit ton objet collection ...


  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    en fait ce que je veux faire est assez simple a comprendre.
    je voudrais que pour chaque checkbox, je puisse récupérer si elle est checkée ou pas.

    mon form se compose d'une collection de checkbox et j'aimerais que lorsque je submit le form la collection de checkbox se mette a jour.

  6. #6
    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
    Citation Envoyé par bruno270579
    en fait ce que je veux faire est assez simple a comprendre.
    je voudrais que pour chaque checkbox, je puisse récupérer si elle est checkée ou pas.

    mon form se compose d'une collection de checkbox et j'aimerais que lorsque je submit le form la collection de checkbox se mette a jour.
    pour savoir si elle est checkée ou pas, il suffit de tester si la valeur récuperé est null.

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Mais ca ne fonctionne pas, lorsque je regarde les données que je récupère dans mon action, je m'appercois que les valeurs n'ont pas été modifées lors du submit.

  8. #8
    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
    Citation Envoyé par bruno270579
    Mais ca ne fonctionne pas, lorsque je regarde les données que je récupère dans mon action, je m'appercois que les valeurs n'ont pas été modifées lors du submit.
    si tu as un champs selected dans ton bean (pas dans la collection) et si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:checkbox  property="selected" value="true">oui</html:checkbox>
    tu récuperera la valeur "selected" si il est cochée..

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    le probleme est que le selected est dans la collection ...

    Citation Envoyé par Sniper37
    Citation Envoyé par bruno270579
    Mais ca ne fonctionne pas, lorsque je regarde les données que je récupère dans mon action, je m'appercois que les valeurs n'ont pas été modifées lors du submit.
    si tu as un champs selected dans ton bean (pas dans la collection) et si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:checkbox  property="selected" value="true">oui</html:checkbox>
    tu récuperera la valeur "selected" si il est cochée..

  10. #10
    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
    ouii exactement, et un checkbox n'est pas fait pour une collection, c'est là que je ne comprends pas ce que tu veux faire ?

  11. #11
    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
    Citation Envoyé par bruno270579
    Mais ca ne fonctionne pas, lorsque je regarde les données que je récupère dans mon action, je m'appercois que les valeurs n'ont pas été modifées lors du submit.
    si tu as un champs selected dans ton bean (pas dans la collection) et si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:checkbox  property="selected" value="true">oui</html:checkbox>
    tu récuperera la valeur "selected" si il est cochée..

  12. #12
    Membre régulier Avatar de et.rond.et.rond
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 110
    Points : 119
    Points
    119
    Par défaut
    regarde dans le tuto là, il y a un exemple avec des case à cocher et ce que tu veux faire utilise surement le même principe
    http://schmitt.developpez.com/tutori.../introduction/

  13. #13
    Membre à l'essai
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    merci a tous pour vous etre pencher sur mon probleme, je l'ai maintenant résolu en utilisant non plu des collection mais des tableaux d'object et des multibox

  14. #14
    Membre à l'essai
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    finalement j'ai encore un soucis,
    Lors de l'affichage des checkbox, celle ci peuvent être déjà checkée ou pas (selon un champs dans la db).

    le probleme est que lorsque j'ai un champs chécké et que je déselectionne tout, que je valide, dans le form récupéré, il considère toujours la checkbox comme checkée.

    je vous laisse une partie de mon code.

    d'avance merci

    Bruno


    JSP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <logic:iterate id="current" property="recipient" name="dockProductForm"  > 
       <tr>
          <td>
    		<html:multibox property="selectedRecipient">
    			<bean:write name="current" property="value" />
     
    		</html:multibox>
    		 <bean:write name="current" property="label" /> 
        </td>
    </tr>
     </logic:iterate>

    initiilisation des LabelValueBean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for (Iterator it = R.iterator(); it.hasNext();)
    			{
    				choice c = (choice) it.next();
    				recipients[counter] = new LabelValueBean(c.getItem(), String.valueOf(c.getId())); 					
    				counter ++;
     
    			}
    Dans l'action j'initialise les tableau selectedItem selon la valeur de la db (pour affichage de la checkbox cochée ou pas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     for(int i=0; i<R.size();i++) {
    		    	if(((choice)R.get(i)).getSelected()==true){
    		    		int tmp = ((choice)R.get(i)).getId();
    		    		selectedRecipients[cpt] = String.valueOf(tmp);
     
    		    	}
    récupération des données dans le form, donnée incorrect si je uncheck une checkbox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dockProductForm dp = (dockProductForm) form;		
    			Object[] selectedRecipient = dp.getSelectedRecipient();
    			Object[] recipient = dp.getRecipient();
    			for(int i=0; i<selectedRecipient.length;i++){
    				Object o = selectedRecipient[i];
    				if(o!=null)
    				System.out.println("Object "+o.toString());
    			}

  15. #15
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Points : 77
    Points
    77
    Par défaut
    je pense que ton navigateur il checrhe la page ds le cache !! parcequ'il prend les valeurs de l'ancien form (la page ds le cache)!! alors essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <meta http-equiv="pragma" content="no-cache">
    Elle indique au navigateur de ne pas utiliser de cache pour la page qu'il reçoit.
    si ca ne marche pas !! je ne vois pas ou ets le prob!

  16. #16
    Membre à l'essai
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    je ne pense pas que le probleme vienne de la.
    en fait le probleme n'apparait que je déselectionne les checkbox chéckée, si j'en selectionne d'autres, je n'ai plu de probleme.
    je crois que le soucis vient plutot du fait que lorsque je deselectionne tout, le controleur ne va pas faire de validation et donc ne va pas modifier l'état du tableau selectedItem.

    comment faire pour qu'il valide meme si aucune checkbox n'est cochée?

    merci d'avance

  17. #17
    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
    Citation Envoyé par bruno270579
    je ne pense pas que le probleme vienne de la.
    en fait le probleme n'apparait que je déselectionne les checkbox chéckée, si j'en selectionne d'autres, je n'ai plu de probleme.
    je crois que le soucis vient plutot du fait que lorsque je deselectionne tout, le controleur ne va pas faire de validation et donc ne va pas modifier l'état du tableau selectedItem.

    comment faire pour qu'il valide meme si aucune checkbox n'est cochée?

    merci d'avance
    Salut,

    quand tu séléctionne des check box, le traitement reste coté client, le controleur ne saisit l'action que si tu fais un submit..
    Tu peux faire des appels asynchrone au serveur à l'aide d'AJAX.
    Si tu ne peux pas faire autrement.. encore un nouveau truc à apprendre ..

    http://java.sun.com/developer/technicalArticles/J2EE/AJAX/

  18. #18
    Membre à l'essai
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    je me suis mal exprimé, je voulais dire que lorsque les checkbox sont déselectionnée et que je fais un submit alors le controleur ne met pas à jour le tableau selecteditem alors que lorsque des checkbox sont selectionnée il le fait correctement.

    je crois qu'il faudrait faire une méthode reset pour le tablea selectedItem mais je ne vois pas trop comment faire ça.

    Merci de vos conseils

  19. #19
    Membre régulier Avatar de venegan
    Inscrit en
    Mars 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut
    les valeurs de checkbox ne sont envoyés que lorsqu'elle sont cochés.
    Essaie de résoudre ton problème par une action javascript pour donner à tes checkbox cochées une nouvelles valeur et ainsi dans ton action tu remet a faux celle qui n'auront pas cette aleur (ie elle n'étaient pas coché)

  20. #20
    Membre régulier Avatar de Resyek
    Inscrit en
    Juillet 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 97
    Points : 104
    Points
    104
    Par défaut
    En fait c'est une erreur extrêmement classique (je l'ai faite la semaine dernière quand j'ai découvert les multibox).
    Il suffit de surcharger la méthode "reset" de ton formulaire.
    Ca ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void reset(ActionMapping mapping, HttpServletRequest request) {
      String [] cotisationsVide={};
      this.setCotisationsListe(cotisationsVide);
     }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Struts 1.3.8] Probleme html:link dynamique
    Par mastamx dans le forum Struts 1
    Réponses: 13
    Dernier message: 05/02/2008, 14h59
  2. [Struts] Problème de génération code HTML
    Par GNK dans le forum Struts 1
    Réponses: 4
    Dernier message: 08/09/2005, 16h10
  3. [Struts]Problème de checkbox
    Par soony dans le forum Struts 1
    Réponses: 5
    Dernier message: 22/08/2005, 17h17
  4. [struts][debutant]input checkbox vs html checkbox
    Par venegan dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/08/2005, 16h23
  5. [STRUTS]Pb de checkbox
    Par larude dans le forum Struts 1
    Réponses: 8
    Dernier message: 08/04/2004, 16h07

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