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:select] dans un [logic:iterate] : problème de récupération des données


Sujet :

Struts 1 Java

  1. #21
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 43
    Par défaut
    Citation Envoyé par c_nvy
    Il faut remplacer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    request.setAttribute("listeEvalEleve",listeEvalEleve);
    request.setAttribute("listeEvalEntreprise",listeEvalEntrepise);
    request.setAttribute("listeEvalCollege",listeEvalCollege);
    par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    formulaire.setListeEvalEleve(listeEvalEleve);
    formulaire.setListeEvalEntreprise(listeEvalEntreprise) ;
    formulaire.setListeEvalCollege(listeEvalCollege);

    oui oui effectivement, je viens juste d'éditer mon post car je me suis rendu compte de l'énorme erreur... merci encore

  2. #22
    Expert confirmé

    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
    Par défaut
    De rien.
    Si tout est ok, n'oublie pas le tag

  3. #23
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 43
    Par défaut
    voila, maintenant j'ai une exception :

    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
     
    javax.servlet.ServletException: BeanUtils.populate
    	org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
    	org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
     
    cause mère
     
    java.lang.NullPointerException
    	org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(PropertyUtils.java:515)
    	org.apache.commons.beanutils.PropertyUtils.getIndexedProperty(PropertyUtils.java:428)
    	org.apache.commons.beanutils.PropertyUtils.getNestedProperty(PropertyUtils.java:770)
    	org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:801)
    	org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:881)
    	org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
    	org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
    	org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
    voila à quoi ressemble mon UpdateEvaluationAction :
    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
     
    public class UpdateEvaluationAction
        extends Action {
     
      public ActionForward perform(ActionMapping mapping, ActionForm form,
                                   HttpServletRequest request,
                                   HttpServletResponse response) throws
          ServletException, IOException {
     
     
     
        UpdateEvaluationForm updateForm = (UpdateEvaluationForm) form; 
        HttpSession session = request.getSession(true);
     
        GestionnaireEvaluation GEval=new GestionnaireEvaluation();
        Evaluation evaluation=(Evaluation)session.getAttribute("evaluation");
        int idEval =evaluation.getIdEval();
     
        // on rempli l'objet evaluation avec les données du formulaire
     
        String remEleve=updateForm.getRemarqueEleveGen();
        StringMySQLConverter convRemEleve= new StringMySQLConverter(remEleve);
        remEleve = convRemEleve.adapterPourMySQL();
        evaluation.setRemEl(remEleve);
     
        String remColl=updateForm.getRemarqueCollegeGen();
        StringMySQLConverter convRemCollege= new StringMySQLConverter(remColl);
        remColl = convRemCollege.adapterPourMySQL();
        evaluation.setRemColl(remColl);
     
        String remEntreprise=updateForm.getRemarqueEntrepriseGen();
        StringMySQLConverter convRemEntreprise= new StringMySQLConverter(remEntreprise);
        remEntreprise = convRemEntreprise.adapterPourMySQL();
        evaluation.setRemEnt(remEntreprise);
     
        GEval.updateEvaluation(evaluation); // on met à jour l'evaluation dans la base
     
        GestionnaireEvaluationBesoin GEvalBes=new GestionnaireEvaluationBesoin();
     
        Vector listeEvalBesEleve=updateForm.getListeEvalEleve();
        Iterator itElev=listeEvalBesEleve.iterator();
     
              while (itElev.hasNext()) {
              EvaluationBesoin evalBes = (EvaluationBesoin)itElev.next();
              GEvalBes.updateEvaluationBesoin(evalBes);
          }
     
        Vector listeEvalBesEntreprise=updateForm.getListeEvalEntreprise();
        Iterator itEnt=listeEvalBesEntreprise.iterator();
     
          while (itEnt.hasNext()) {
              EvaluationBesoin evalBes = (EvaluationBesoin)itEnt.next();
              GEvalBes.updateEvaluationBesoin(evalBes);
          }
     
        Vector listeEvalBesCollege=updateForm.getListeEvalCollege();
        Iterator itColl=listeEvalBesCollege.iterator();
     
          while (itColl.hasNext()) {
              EvaluationBesoin evalBes = (EvaluationBesoin)itColl.next();
              GEvalBes.updateEvaluationBesoin(evalBes);
          }
     
        session.removeAttribute("updateForm"); // on supprime l'attribut updateForm de la session
     
        return mapping.findForward("success");        
     
      }
    }
    J'ai mis un breakpoint au début de ma fontion pour voir ce qui passait, mais apparemment il ne passe meme pas dedans puisque l'exception est générée directement sans que je m'arrete sur ce breakpoint....

  4. #24
    Expert confirmé

    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
    Par défaut
    Quel scope as-tu mis dans le mapping des Actions liées à l'ActionForm UpdateEvaluationForm dans le struts-config.xml ?
    Dans ton cas, il faut mettre un scope="session".

  5. #25
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 43
    Par défaut
    j'avais scope="request", c'est ce que je met pour tout mesz formulaires de ce type et ça fontionne...
    j'ai essayé avec scope="session" mais le problem reste le meme, tjrs la meme exception

  6. #26
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 43
    Par défaut
    voici les lignes du struts-config.xml qui nous interessent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     <action name="updateEvaluation" path="/updateEvaluation" scope="session" type="projet.action.UpdateEvaluationAction">
                <forward name="success" path="/listeEleve.do" />
      </action>
     
     
    <action name="updateEvaluation" path="/vueEvaluation" scope="request" type="projet.action.VueEvaluationAction" validate="false">
                <forward name="view" path="/pages/vueEvaluation.jsp" />
                <forward name="modif" path="/pages/modifEvaluation.jsp" />
                <forward name="fail" path="/pages/login.jsp" />
            </action>

  7. #27
    Expert confirmé

    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
    Par défaut
    As-tu essayé en mettant scope="session" également sur ton Action de path /vueEvaluation ?

    Citation Envoyé par romarseille
    j'avais scope="request", c'est ce que je met pour tout mesz formulaires de ce type et ça fontionne...
    ça fonctionnait parce que tu mettais les propriétés de ton formulaire dans le scope via des request.setAttribute et non via les setters du formulaire.

    Ton form-bean doit obligatoirement être en scope session pour pouvoir être accédé par les deux Actions.

  8. #28
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 43
    Par défaut
    Merci beaucoup, beaucoup, beaucoup....

    Le probleme venait effectivement du scope....

  9. #29
    Expert confirmé

    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
    Par défaut
    Cool.

  10. #30
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 43
    Par défaut
    Désolé,
    une dernière petite question...

    En règle générale, pour le mapping des formulaires, la logique veut que l'on utilise tout le temps scope="session" ?

    Ou bien celà dépent-il des cas ? car dans mon appli j'ai pas mal de formulaires pour lesquels le mapping est à scope="request"...

  11. #31
    Expert confirmé

    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
    Par défaut
    ça dépend des cas.

    Le scope session n'est utile que si ton form-bean est partagé entre plusieurs actions, comme dans le cas traité dans cette discussion.

    En effet, dans ton cas, la requête commence à l'appel de l'Action qui initialise le formulaire.
    Quand la jsp s'affiche, la réponse a été construite et envoyée au navigateur, ce qui signifie que la requête est terminée.
    Si tu es en scope request, le form-bean rempli n'est plus accessible au submit du formulaire, parce que c'est une nouvelle requête qui est envoyée.
    Voilà pourquoi il faut utiliser le scope session dans ce cas-là.
    Je ne sais pas si c'est assez clair.

    Pour un form-bean lié à une seule Action, un scope request suffit.

  12. #32
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 43
    Par défaut
    ok,
    merci pour la reponse (ça va c'était assez clair, enfin j'ai compris, c'est le principal )

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/10/2011, 13h22
  2. Réponses: 36
    Dernier message: 26/11/2008, 16h55
  3. html:text dans un logic:iterate
    Par ptitom1381 dans le forum Struts 1
    Réponses: 4
    Dernier message: 07/11/2008, 13h11
  4. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 20h04
  5. Réponses: 22
    Dernier message: 05/07/2006, 15h21

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