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

Servlets/JSP Java Discussion :

probleme dans une JSP (copie d'attributs d'un objet dans un autre objet)


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 58
    Points : 30
    Points
    30
    Par défaut probleme dans une JSP (copie d'attributs d'un objet dans un autre objet)
    Bonjour à tous,

    J'ai un petit problème dans une JSP. Je cherche à copier les attributs d'un objet mis en session en attendant, dans un autre objet...Problème le compilateur me fait une erreur et me dit qu'il ne trouve pas la classe en question. âpres vérification il n'y a aucune raison à ce message vu que la classe est accessible et que je peu même créer des objet de cette meme classe... je me tape la tête contre les murs...

    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
    <%@ page language="java" import="test.Produit"%>
    <%@ page language="java" import="test.solde1"%>
    <%@ page language="java" import="java.io.*"%>
     
     <% test.Produit produit1 = (Produit)session.getAttribute("produit1"); 
     
     if (produit1 == null )
     {
         produit1 = new test.Produit();
         session.setAttribute("produit1",produit1);
     }    
        
        try{
        solde1 solde11 = new test.solde1();
        session.setAttribute("solde11",solde11);
        }
        catch(Exception e)
        {    
            out.println(e);
        }
        
     
     
     
     %>
     
     
     <%= produit1.getNom() %>
     <%= solde11.getNom() %>
    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
    package test;
     
    public class solde1 {
     
         public String nom = "skjldkl";
         public String prix = "lkdslklk";
         public String desc = "dfsjkfj";
         public String ref = "hjkhkjdhdk";
     
         public String getDesc()  { return desc; }
         public String getNom()  { return nom; }
         public String getPrix()  { return prix; }
         public String getRef() {return ref;}
     
         public void setRef(String ref) {this.ref=ref; }
         public void setDesc(String desc) { this.desc = desc; } 
         public void setNom(String nom) { this.nom = nom; }
         public void setPrix(String prix) { this.prix = prix; }
     
    }
    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
    package test;
     
    public class Produit {
        String nom ="1";
        String prix ="2";
        String desc ="3";
        String ref ="4" ;
     
        public String getDesc()  { return desc; }
        public String getNom()  { return nom; }
        public String getPrix()  { return prix; }
        public String getRef() {return ref;}
     
        public void setRef(String ref) {this.ref=ref; }
        public void setDesc(String desc) { this.desc = desc; } 
        public void setNom(String nom) { this.nom = nom; }
        public void setPrix(String prix) { this.prix = prix; }
     
    }
    type Rapport d'exception

    message

    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    exception

    org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP

    Une erreur s'est produite à la ligne: 29 dans le fichier jsp: /afficheProduit2.jsp
    Erreur de servlet générée:
    solde11 cannot be resolved


    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

    cause mère

    org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP

    Une erreur s'est produite à la ligne: 29 dans le fichier jsp: /afficheProduit2.jsp
    Erreur de servlet générée:
    solde11 cannot be resolved
    merci d'avance


    PS: autre question peut on stocké plus d'un objet dans la session ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    je suppose que ta ligne 29 est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%= solde11.getNom() %>
    Car ici tu as déclaré ta variable solde11 dans le bloc try et à cette ligne tu tentes de l'utiliser en dehors...
    Essaie de déclarer ta variable avant de rentrer dans le try et ca devrait aller...

  3. #3
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Pour ta jsp, je ne suis pas sûr qu'il puisse reconnaitre directement la session, il faut faire sur les setAttribute ou getAttribute par ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getSession().setAttribute("produit1",produit1);
    Ensuite pour solde11, plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    test.Solde1 solde11 = new test.solde1();
    avec Solde1 et non solde1 car les noms de classes commencent tjs par une Majuscule

    Essayes déjà tout cela
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 58
    Points : 30
    Points
    30
    Par défaut
    Tout simplement...merci George7 tu avais raison, cela coulé de bon sens... mais il fallait y penser...

    Merci aussi à French

    PS>French: ma JSP reconnait bien directement la session.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 58
    Points : 30
    Points
    30
    Par défaut
    Une dernière chose... j'aimerai copier l'objet Produit1 et ses attribut dans l'objet solde11 et ses attribut...

    Est-ce possible ou je suis en train de délirer la ? comme tout est histoire de conteneur cela devrait être possible, mais rien ne marche, j'ai beau essayer de caster dans tout les sens, tout essayer rien ne marche...Peut etre parceque je manipule un JavaBean..enfin j'en sais rien... je confond peut-être tout la...

    J'attends vos idées

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par bim92i Voir le message
    j'aimerai copier l'objet Produit1 et ses attribut dans l'objet solde11 et ses attribut...
    mais rien ne marche, j'ai beau essayer de caster dans tout les sens, tout essayer rien ne marche...
    Un bête solde11.setDesc(produit1.getDesc()) ne suffit pas ? curieux...
    Et quand tu dis que ça ne marche pas, quel est le problème (compilation ou exécution ? quel message d'erreur ?)

    Ceci dit, copier tous les champs d'une classe vers l'autre n'est pas forcément la meilleure chose à faire.
    Ne vaudrait-il mieux pas déclarer un champ de type Produit dans Solde1 ? (et ensuite tu définis setProduit(Produit p), getProduit(), et tu accèdes bien évidemment aux champs du produit via le solde avec solde11.getProduit().getDesc() etc...)
    Bon, ça dépend de ce que représentent ces classes en fait.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 58
    Points : 30
    Points
    30
    Par défaut
    Si ! un bête " solde11.setDesc(produit1.getDesc()) " comme tu dis suffit... à copier... un des attributs seulement...

    Plus largement, comment pourrais-je en une fois, copier tous les attributs de Produit1 vers solde11... suis-je assez clair... où faut-il que je change de cerveau...

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Ah, tous les champs d'un coup, c'était pas précisé du tout dans ton message précédent

    J'imagine que ça doit pouvoir se faire par réflexion, en parcourant tous les champs (ou les getter) de Produit, et à chaque fois en vérifiant qu'un champ (ou un setter) de même nom et de même type existe dans Solde1 et en copiant la valeur, enfin ce n'est pas simple je n'ai jamais fait de réflexion en Java, mais tu trouveras des indications ici par exemple.
    Montre donc ce que tu avais commencé à tester et qui ne marchait pas.

    Par contre je me demande pourquoi tu veux copier tous les champs comme ça... Est-ce que tu risques vraiment, dans ton appli, de ne connaître qu'à l'exécution les champs d'une des deux classes ?
    Parce que bon, si jamais c'est juste pour éviter de recopier 4 fois (ou plus...) la quasi même ligne dans le code, c'est vraiment pas la peine, hein La réflexion c'est super lourd, tant au développement qu'à l'exécution.

    Et sinon, je persiste : pourquoi copier la valeur des champs plutôt que de faire référence directement à un Produit dans Solde1 ? Tu as peut-être tes raisons, mais comme tu ne l'as pas précisé je ne sais pas si tu y as pensé donc j'insiste, ça serait bête que tu passes à côté de cette suggestion
    Et si tu as vraiment besoin de copier le produit (i.e. ne pas garder la référence vers l'objet Produit utilisé pour remplir Solde1) tu peux définir la méthode clone dans Produit, puis appeler solde11.setProduit(produit1.clone())...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 58
    Points : 30
    Points
    30
    Par défaut
    en effet je n'avais pas envie de recopier 4 fois "ou plus" comme tu dis ...

    Mais c'etait surtout pour automatiser l'opé si demain j'ai 350 000 attributs à recopier...

    Cela m'a permis d'entendre parler de la reflexion...

    En tout cas merci à toi pour tes réponses...

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Ah, j'ai édité mon message au moment où tu répondais, donc : regarde les deux dernières lignes du message précédent !
    En plus ça répond en partie au problème "automatiser l'opé si demain j'ai 350 000 attributs à recopier" : tout est centralisé dans la classe Produit.

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

Discussions similaires

  1. Creer des objets dans une JSP.
    Par cotede2 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 26/03/2012, 17h52
  2. Réponses: 1
    Dernier message: 31/08/2009, 22h48
  3. Récupération de sous objet dans une JSP
    Par requiem29 dans le forum Struts 2
    Réponses: 0
    Dernier message: 10/11/2008, 09h43
  4. Recuperer un objet dans une JSP
    Par iviath dans le forum JSF
    Réponses: 2
    Dernier message: 05/09/2008, 14h58
  5. Acces aux attributs d'un bean dans une jsp
    Par mariemor64 dans le forum Struts 1
    Réponses: 2
    Dernier message: 02/06/2006, 10h32

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