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 :

Problème avec <jsp:useBean>


Sujet :

Servlets/JSP Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Par défaut Problème avec <jsp:useBean>
    Bonjour,

    Voilà j'ai un petit soucis avec cette balise.

    Mon code dans ma .jsp (AccueilMissionne.jsp):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <%@ page language="java" contentType="text/html" pageEncoding="UTF-8" %>
    <jsp:useBean id="C" class="FM.Categorie"/>
     
    <% C = new FM.Categorie("aaa", true, null); %>
    Celui de ma classe :

    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 FM;
    import java.util.Date;
     
    public class Categorie 
    {
        private int ID_Categorie;
        private String Libelle;
        private boolean EtatSuppr;
        private Date DateSuppr;
     
        public Categorie(String p_Libelle, boolean p_EtatSuppr, Date p_DateSuppr)
        {
            Libelle = p_Libelle;
            EtatSuppr = p_EtatSuppr;
            DateSuppr = p_DateSuppr;
        }
     
        // Les accesseurs ...
    }
    Mon message d'erreur :

    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
     
    org.apache.jasper.JasperException: /AccueilMissionne.jsp(2,0) 
    	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
    	org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1175)
    	org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1117)
    	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
    	org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2216)
    	org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2222)
    	org.apache.jasper.compiler.Node$Root.accept(Node.java:457)
    	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2166)
    	org.apache.jasper.compiler.Generator.generate(Generator.java:3321)
    	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
    	org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
    	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Sachant que donc mes classes appartiennent au package FM que j'ai crée (car d'origine il n'y en avait pas) mais cela ne fonctionne pas mieu.

    Quelqu'un a une idée ?

  2. #2
    Membre chevronné Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Par défaut
    Je pense que tu n'utilises pas ce taglib correctement.
    Que fait jsp:useBean ?

    Dans un premier temps il va essayer de localiser un bean du type de classeFM.Categorie. En regardant dans la sessions, la request... (on peut limiter cette recherche en utilisant l'attribut scope)
    Si un tel bean est trouvé, une référence y est faite avec l'id que tu donnes.

    Si le bean n'est pas trouvé, alors un nouveau bean va être créé (instancié).
    Mais avec ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <jsp:useBean id="C" class="FM.Categorie"/>
    le bean va être instancié avec un constructeur sans argument. Ce que tu n'as pas....

    Ce que tu dois faire : créer un constructeur sans argument.
    Setter les valeurs de tes attributs après.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <jsp:useBean id="monBean" scope="session" class="package.MonObject" >
        <jsp:setProperty name="monBean" property="monAttribut" value="1.0" />
    </jsp:useBean>

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Par défaut
    Merci de ta réponse.

    J'ai modifié mon code comme ceci :

    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
     
    <%@ page language="java" contentType="text/html" pageEncoding="UTF-8" %>
    <jsp:useBean id="C" class="FM.Categorie" scope="page">
        <jsp:setProperty name="C" property="setLibelle" value="toto"/>
    </jsp:useBean>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                <link rel="stylesheet" media="screen" type="text/css" title="Design" href="Style_Recherche.css" />
            <title>Accueil</title>
     
        </head>
        <body>
            <center>
                <h3>Bienvenue Prénom NOM</h3>
                <br /><br /><br />
     
                <p>Libellé = <%= C.getLibelle()  %></p>
     
    etc...
    Et là, j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    org.apache.jasper.JasperException: =Impossible de trouver de l'information sur la propriété 'Libelle' dans le bean de type 'FM.Categorie'
    	org.apache.jasper.runtime.JspRuntimeLibrary.internalIntrospecthelper(JspRuntimeLibrary.java:363)
    	org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(JspRuntimeLibrary.java:307)
    	org.apache.jsp.AccueilMissionne_jsp._jspService(AccueilMissionne_jsp.java:51)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Et j'ai enlevé tous les paramètres de mon constructeur ainsi que son contenu
    J'me suis trompé où ?

  4. #4
    Membre chevronné Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Par défaut
    Il faut juste que tu donne le nom de ta propriété :Libelle
    et pas setLibelle.

    D'ailleurs, il est préférable de commencer le nom de ses attributs par des minuscules :
    attribut : libelle
    accesseur : setLibelle(xxx), getLibelle()

    Quand le taglib voit l'attribut libelle, il se charge de lui même de mettre la première lettre en masjucule Libelle, puis d'ajouter set. Au final il appel setLibelle(xxx)

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 92
    Par défaut
    Merci beaucoup ! ça marche

    Par contre si je veux utiliser une classe statique comment je fais ?

  6. #6
    Membre chevronné Avatar de supermanu
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    330
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 330
    Par défaut
    Tu veux dire une méthode static ? Dans ce cas pas besoins d'instancier la classe qui contient cette méthode, donc pas besoins d'utiliser jsp:usebean.
    Tu peux juste faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <% nomDuPackage.nomDeLaClasse.nomMethodeStatic(); %>

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

Discussions similaires

  1. problème avec le <jsp:forward />
    Par tayrok dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/12/2010, 21h35
  2. Problème avec struts+JSP
    Par moumen dans le forum Struts 1
    Réponses: 8
    Dernier message: 15/05/2007, 12h23
  3. [débutant] Problème avec une JSP
    Par the dark derf dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 15/02/2007, 16h29
  4. Problème avec index.jsp
    Par ninie5131 dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 04/07/2006, 16h45

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