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

Développement Web en Java Discussion :

javax.el.PropertyNotFoundException: Property 'prenom' not found on type java.lang.String


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de cobos
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 111
    Par défaut javax.el.PropertyNotFoundException: Property 'prenom' not found on type java.lang.String
    Bonsoir à tous, depuis quelque heures je bute sur cette erreur "javax.el.PropertyNotFoundException: Property 'prenom' not found on type java.lang.String".
    Au fait je fais un exercice en JEE.
    voici mon DOMAINE
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package com.objis.proxybanquev2.proxybanquev2domaine;
     
    /**
     *
     * @author Abdel veno vedi vici
     */
    public class Client {
       private Long idClient;
        private String nom;
        private String prenom;
        private String email;
        private String adresse;
        private Long idConseiller;
     
        public Long getIdClient() {
            return idClient;
        }
     
        public void setIdClient(Long idClient) {
            this.idClient = idClient;
        }
     
        public String getNom() {
            return nom;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        public String getPrenom() {
            return prenom;
        }
     
        public void setPrenom(String prenom) {
            this.prenom = prenom;
        }
     
        public String getEmail() {
            return email;
        }
     
        public void setEmail(String email) {
            this.email = email;
        }
     
        public String getAdresse() {
            return adresse;
        }
     
        public void setAdresse(String contact) {
            this.adresse = contact;
        }
     
        public Long getIdConseiller() {
            return idConseiller;
        }
     
        public void setIdConseiller(Long idConseiller) {
            this.idConseiller = idConseiller;
        }
     
        public Client(Long idClient, String nom, String prenom, String email, String adresse, Long idConseiller) {
            this.idClient = idClient;
            this.nom = nom;
            this.prenom = prenom;
            this.email = email;
            this.adresse = adresse;
            this.idConseiller = idConseiller;
        }
     
        public Client() {
        }
     
     
    }
    DAO:
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package com.objis.proxybanquev2.proxybanquev2dao.impl;
     
    import com.objis.proxybanquev2.proxybanquev2dao.inter.IClientDao;
    import com.objis.proxybanquev2.proxybanquev2domaine.Client;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.LinkedList;
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    /**
     *
     * @author Abdel veno vedi vici
     */
    public class ClientDaoImpl implements IClientDao {
     
     
     
        /**
         * Retourner la liste des clients d'un conseiller
         * @param idConseiller
         * @return Collection Client pour un conseiller donné
         */
        @Override
        public LinkedList<Client> FindClientByConseiller(Long idConseiller) {
             String listSql = "Select *  from client where idconseiller=? ";
            LinkedList<Client> clients = new LinkedList<>();
     
     
            try {
                PreparedStatement ps = ConnexionImpl.getConnexion().prepareStatement(listSql);
               ps.setLong(1, idConseiller);
                ResultSet rs = ps.executeQuery();
     
                while (rs.next()) {
                    Client client = new Client();
                    client.setIdClient(rs.getLong("idClient"));
                    client.setNom(rs.getString("nom"));
                    client.setPrenom(rs.getString("prenom"));
                    client.setEmail(rs.getString("email"));
                    client.setAdresse(rs.getString("adresse"));
                    client.setIdConseiller(rs.getLong("idconseiller"));
     
                    clients.add(client);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
     
            return clients;
        }
     
        /**
         *
         * @param idclient
         * @return
         */
        @Override
        public LinkedList<Client> selectOne(Long idclient){
        String listSql = "Select *  from client where idClient=? ";
            LinkedList<Client> clients = new LinkedList<>();
     
     
            try {
                PreparedStatement ps = ConnexionImpl.getConnexion().prepareStatement(listSql);
               ps.setLong(1, idclient);
                ResultSet rs = ps.executeQuery();
     
                while (rs.next()) {
                    Client client = new Client();
                    client.setIdClient(rs.getLong("idClient"));
                    client.setNom(rs.getString("nom"));
                    client.setPrenom(rs.getString("prenom"));
                    client.setEmail(rs.getString("email"));
                    client.setAdresse(rs.getString("adresse"));
                    client.setIdConseiller(rs.getLong("idconseiller"));
     
                    clients.add(client);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
     
            return clients;
        }
     
        @Override
        public boolean update(Client client) {
            int val=-1;
            try {
                 String update ="update client set nom=?,prenom=?,email=?,adresse=?,idconseiller=? where idClient=?";
                PreparedStatement ps = ConnexionImpl.getConnexion().prepareStatement(update);
                ps.setString(1, client.getNom());
                ps.setString(2, client.getPrenom());
                ps.setString(3, client.getEmail());
                ps.setString(4, client.getAdresse());
                ps.setLong(5, client.getIdConseiller());
                ps.setLong(6, client.getIdConseiller());
                val = ps.executeUpdate();
            } catch (SQLException ex) {
                Logger.getLogger(ClientDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
            }
          return  val>0;
        }
     
    }
    Voici la servlet:
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package com.objis.proxybanquev2.proxybanquev2web.controleur;
     
    import com.objis.proxybanquev2.proxybanquev2domaine.Client;
    import com.objis.proxybanquev2.proxybanquev2service.impl.ClientServiceImpl;
    import com.objis.proxybanquev2.proxybanquev2service.inter.IClientService;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.LinkedList;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    /**
     *
     * @author KRA
     */
    @WebServlet(name = "ModifierClient", urlPatterns = {"/ModifierClient"})
    public class ModifierClient extends HttpServlet {
     
        private IClientService clientservice = new ClientServiceImpl();
     
        /**
         * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
         * methods.
         *
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            try (PrintWriter out = response.getWriter()) {
                /* TODO output your page here. You may use following sample code. */
                out.println("<!DOCTYPE html>");
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Servlet ModifierClient</title>");            
                out.println("</head>");
                out.println("<body>");
                out.println("<h1>Servlet ModifierClient at " + request.getContextPath() + "</h1>");
                out.println("</body>");
                out.println("</html>");
            }
        }
     
        // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
        /**
         * Handles the HTTP <code>GET</code> method.
         *
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
     
             Long idclient=null;
     
             idclient =Long.parseLong( request.getParameter("idclient"));
     
             LinkedList<Client> client = new LinkedList<>();
             client =clientservice.selectOne(idclient);
              for(Client c : client){
                                     //  System.out.println(c.getNom());
                                      //  System.out.println(c.getPrenom());
                                         System.out.println(c.getEmail());
                                          System.out.println(c.getAdresse());
     
                      }
           request.setAttribute("client", client);
            request.getRequestDispatcher("editerClient.jsp").forward(request, response);
     
        }
     
        /**
         * Handles the HTTP <code>POST</code> method.
         *
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            processRequest(request, response);
        }
     
        /**
         * Returns a short description of the servlet.
         *
         * @return a String containing servlet description
         */
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
     
    }
    la vue:
    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
    70
    71
    72
    73
    74
    75
     
     
     
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@include file="header.jsp" %>
                <!-- ******************************************************************-->
                <!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ debut de le content @@@@@@@@@@@@@@@@@-->
                <!-- ******************************************************************-->
     
      <div class="content-wrapper">
        <div class="container-fluid">
          <!-- Breadcrumbs-->
          <ol class="breadcrumb">
            <li class="breadcrumb-item">
              <a href="index.html">Accueil</a>
            </li>
            <li class="breadcrumb-item active">Modification d'un client</li>
          </ol>
          <div class="row">
            <div class="col-12">
     
                <!-- ******************************************************************-->
                <!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ici le content @@@@@@@@@@@@@@@@@-->
                <!-- ******************************************************************-->
     
               <div class="container">
        <div class="card card-login mx-auto mt-5">
          <div class="card-header">Modification d'un client</div>
          <div class="card-body">
            <form>
                <c:forEach items="client" var="c">
     
                  <div class="form-group">
                <label for="exampleInputPassword1">Nom</label>
                <input class="form-control" id="nom" type="text" aria-describedby="emailHelp" name="nom" value=${c.nom}>
              </div>
     
              <div class="form-group">
                <label for="exampleInputEmail1">Prenom</label>
                <input class="form-control" id="prenom" type="text" aria-describedby="emailHelp" name="prenom" value="${c.prenom}">
              </div>
              <div class="form-group">
                <label for="exampleInputPassword1">E-mail</label>
                <input class="form-control" id="email" type="text" aria-describedby="emailHelp" name="email" value="${c.email}">
              </div>
               <div class="form-group">
                <label for="exampleInputPassword1">Adressel</label>
                <input class="form-control" id="adresse" type="text" aria-describedby="emailHelp" name="adresse" value="${c.adresse}">
                </di>
                <div class="form-group">
                    <label for="exampleInputPassword1"></label>
                    <input type="submit" id="valider" value="Valider" class="btn btn-success">
                    <input type="reset" id="ennuler" value="Annuler" class="btn btn-warning">
              </di
              <div >
     
              </div>
             </c:forEach>
            </form>
     
          </div>
        </div>
      </div>
     
     
              <!-- ******************************************************************-->
              <!--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ici le content @@@@@@@@@@@@@@@@@-->
              <!-- ******************************************************************-->
     
              </div>
          </div>
        </div>
        <!-- /.container-fluid-->
        <!-- /.content-wrapper-->
        <%@include file="ProxyFooter.jsp" %>

    C'est au niveau de la récupération des données dans la vue que rencontre l'erreur.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu peux commencer par nous dire à quelle ligne de ton jsp correspond l'erreur? Ca doit apparaitre dans la stacktrace de l'erreur.

    En gros ce message dit que tu as une variable jstl de type string et que t'essaie d'en extraire la propriété prénom.
    Je suis un peu étonné que ça vienne de la vue que tu nous donne car juste avant c.prenom il y a c.nom, et si c était une string, je suis un peu rouillé en jstl, mais je crois qu'il aurait merdé en premier sur le c.nom.

  3. #3
    Membre confirmé Avatar de cobos
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 111
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Tu peux commencer par nous dire à quelle ligne de ton jsp correspond l'erreur? Ca doit apparaitre dans la stacktrace de l'erreur.

    En gros ce message dit que tu as une variable jstl de type string et que t'essaie d'en extraire la propriété prénom.
    Je suis un peu étonné que ça vienne de la vue que tu nous donne car juste avant c.prenom il y a c.nom, et si c était une string, je suis un peu rouillé en jstl, mais je crois qu'il aurait merdé en premier sur le c.nom.
    Oui l'erreur a commencé sur le nom, j'avais donc mis la ligne du nom en commentaire pour faire un second test sur le prenom qui levé la même erreur ainsi que tous les champs

  4. #4
    Membre confirmé Avatar de cobos
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 111
    Par défaut
    Voici tout le message d'erreur:

    type Rapport d''exception

    message An exception occurred processing JSP page /editerClient.jsp at line 35

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

    exception

    org.apache.jasper.JasperException: An exception occurred processing JSP page /editerClient.jsp at line 35

    32:
    33: <div class="form-group">
    34: <label for="exampleInputPassword1">Nom</label>
    35: <input class="form-control" id="nom" type="text" aria-describedby="emailHelp" name="nom" value=${c.nom}>
    36: </div>
    37:
    38: <div class="form-group">


    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    com.objis.proxybanquev2.proxybanquev2web.controleur.ModifierClient.doGet(ModifierClient.java:83)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    cause mère

    javax.el.PropertyNotFoundException: Property 'nom' not found on type java.lang.String
    javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:244)
    javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:221)
    javax.el.BeanELResolver.property(BeanELResolver.java:331)
    javax.el.BeanELResolver.getValue(BeanELResolver.java:95)
    org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110)
    org.apache.el.parser.AstValue.getValue(AstValue.java:167)
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:957)
    org.apache.jsp.editerClient_jsp._jspx_meth_c_005fforEach_005f0(editerClient_jsp.java:282)
    org.apache.jsp.editerClient_jsp._jspService(editerClient_jsp.java:178)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    com.objis.proxybanquev2.proxybanquev2web.controleur.ModifierClient.doGet(ModifierClient.java:83)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Comme je l'ai dit je suis rouillé, mais je pense que t'aura plus de chance en mettant


    <c:forEach items="${client}" var="c">
    que
    <c:forEach items="client" var="c">
    parce que là je pense que tu itère sur la chaine de caractère "client" et non pas sur ta collection

  6. #6
    Membre confirmé Avatar de cobos
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2014
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 111
    Par défaut
    Quand je fais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <c:forEach items="${client}" var="c">
    , je n'ai plus de message d'erreur mais je ne récupéré pas les valeurs des champs

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

Discussions similaires

  1. Property 'onAjoutProjetButton' not found on type
    Par SuperMicke34 dans le forum JSF
    Réponses: 2
    Dernier message: 27/11/2013, 10h47
  2. Property 'valeur' not writable on type java.lang.String
    Par bestcasaoui dans le forum Frameworks Web
    Réponses: 1
    Dernier message: 25/06/2013, 08h59
  3. Réponses: 2
    Dernier message: 15/08/2012, 17h06
  4. Réponses: 7
    Dernier message: 26/10/2010, 18h31
  5. Réponses: 1
    Dernier message: 22/01/2009, 18h36

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