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 :

Initialisation html:checkbox


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 95
    Par défaut Initialisation html:checkbox
    Bonjour,

    J'ai un problème avec une checkbox que je n'arrive pas à initialiser.
    Le principe est de stocker en session la valeur de la CB à la validation de l'écran et de pouvoir réafficher l'écran à jour au cours de la navigation. Le problème est que si j'arrive bien à récupérer ma valeur (true/false), il m'est en revanche impossible d'initialiser la checkbox. Elle est toujours vide (false) lorsque que je retourne sur l'écran après l'avoir quitté (Et validé bien sur).
    Le code :

    JSP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:checkbox property="var"></html:checkbox>
    ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      private Boolean var; 
      public Boolean getVar() {
    	return var;
      }
      public void setVar(Boolean var) {
    	this.var = var;
      }
      public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
    	var = false;
      }
    J'ai essayé dans la méthode reset() de donner à var la valeur stockée en session, mais dans ce cas la checkBox reste cochée en permanence à la validation du formulaire. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
            HttpSession session = httpServletRequest.getSession();
            Boolean v = (Boolean) session.getAttribute("myVar");
    	var = v != null && v.booleanValue();
      }
    Je ne sais plus quel piste explorer... Toute aide serait la bienvenue.

    Merci

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    La problématique est récurrente et vient du fait qu'une checkbox non cochée ne renvoie rien.
    La piste est la bonne, même s'il existe des variations...
    Il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) 
    {
        Boolean v = (Boolean)request.getSession().getAttribute("myVar");
        var = (v != null) ? v.booleanValue() : false;
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 95
    Par défaut
    merci pour la réponse.

    J'avais essayé quelque chose dans le genre mais ça ne fonctionne pas (j'ai tester ta solution tout de même): La CB reste coché et renvoi toujours "true".
    Le problème semble venir du fait que le reset() est appelé avant mon action...

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 95
    Par défaut
    Aucune idée?
    Pas instinctive l'utilisation de cette checkbox...

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je suppose que ta valeur en session n'est pas correctement modifiée...
    A la sortie du contrôleur, il faudrait toujours positionner la valeur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 95
    Par défaut
    C'est ce que je crois faire... mais j'arrive à douter de tout là...

    Méthode reset de mon actionForm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
        System.out.println("[ActionForm:reset / START] VAR (variable) = " + var);
     
        Boolean v = (Boolean) session.getAttribute(Constants.VAR);
        System.out.println("[ActionForm:reset] VAR (session) = " + session.getAttribute(Constants.VAR));
        this.setVar((v == null || !v) ? null : true);
        System.out.println("[ActionForm:reset / END] VAR (variable) = " + var);
      }
    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
     
    public ActionForward execute(ActionMapping mapping,
                                   ActionForm actionForm,
                                   HttpServletRequest request,
                                   HttpServletResponse response) {
        PrefForm prefForm = (PrefForm) actionForm;
        //get the preferences and store them in  session
        HttpSession session = request.getSession();
        HashMap hs = new HashMap();
        System.out.println("[ACTION / START] VAR (from actionForm) = " + prefForm.getVar());
        hs.put(Constants.VAR, prefForm.getVar());
     
        for (Iterator iter = hs.keySet().iterator(); iter.hasNext(); ) {
          Object item = (Object) iter.next();
          session.setAttribute((String) item, hs.get(item) );
        }
        System.out.println("[ACTION / END] VAR (from session) = " + session.getAttribute(Constants.VAR));
        return new ActionForward();
      }
    Mes étapes de test:
    1 - Lorsque j'arrive sur mon écran, la checkbox n'est pas coché OK.
    2 - Je valide, elle reste décochée : OK.
    3 - Je la décoche, je valide. Elle est de nouveau cochée. Pas OK.

    Logs correspondants :
    étape 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [ActionForm:reset / START] VAR (variable) = null
    [ActionForm:reset] VAR (session) = null
    [ActionForm:reset / END] VAR (variable) = null
    [ACTION / START] VAR (from actionForm) = true
    [ACTION / END] VAR (from session) = true
    étape 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [ActionForm:reset / START] VAR (variable) = null
    [ActionForm:reset] VAR (session) = true
    [ActionForm:reset / END] VAR (variable) = true
    [ACTION / START] VAR (from actionForm) = true
    [ACTION / END] VAR (from session) = true
    Trois trucs que je ne comprend pas:
    1 - Pourquoi la méthode "reset()" de l'actionForm est appelée avant l'action?
    2 - Pourquoi dans l'étape 2, au niveau de l'action, var = true alors que dans l'actionForm, var = null?
    3 - Pourquoi ce comportement est différent dans l'étape 3?

    Il doit y avoir un truc que je fais mal mais je vois pas quoi.

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

Discussions similaires

  1. [html:checkbox] initialisation et modification
    Par zybay dans le forum Struts 1
    Réponses: 7
    Dernier message: 12/06/2007, 12h00
  2. [DEBUTANT][STRUTS] Initialiser html:select
    Par mlequim dans le forum Struts 1
    Réponses: 13
    Dernier message: 25/10/2005, 14h59
  3. [struts][debutant]input checkbox vs html checkbox
    Par venegan dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/08/2005, 16h23
  4. html:checkbox gache tout
    Par cbi1net dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 12/08/2005, 11h02
  5. Réponses: 4
    Dernier message: 29/07/2005, 11h47

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