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 :

Erreur lors de l'ajout d'un objet


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Points : 46
    Points
    46
    Par défaut Erreur lors de l'ajout d'un objet
    Bonjour,

    j'ai voulu écrire une petite application web avec JavaEE, JSF, Hibernate et MySQL.
    L'objectif est de découvrir ces outils en créant une application qui me permet de lister, rajouter, supprimer ou modifier des livres.

    Cependant, j'ai une erreur lors de l'ajout d'un nouveau livre : /addBook.xhtml @10,78 value="#{beanBook.b.auteur}": Target Unreachable, 'null' returned null

    « b » est l'instance du nouveau livre et « auteur » une de ses propriétés.

    Voici le code de addBook :

    Code XML : 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
     
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <ui:composition xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                    template="./template.xhtml"
                    xmlns:h="http://xmlns.jcp.org/jsf/html">
     
        <ui:define name="content">
            <h2>Ajouter un nouveau livre</h2>
            <h:form>
                Auteur  : <h:inputText id="auteur" value="#{beanBook.b.auteur}"/><br/>
                Editeur :<h:inputText id="editeur" value="#{beanBook.b.editeur}"/><br/>
                Titre   :<h:inputText id="titre" value="#{beanBook.b.titre}"/><br/>
                <h:commandButton action="#{beanBook.newBook}" value="Add Book"/>
     
                <br/>
                <h:commandLink action="index" value="Retour à liste des livres"/>
            </h:form>
        </ui:define>
     
    </ui:composition>
    voici le beans:
    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
     
    /*
     * 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.webapplicationbook.ejb;
     
    import com.webapplicationbook.helper.HelperBook;
    import com.webapplicationbook.pojo.Book;
    import javax.inject.Named;
    import javax.enterprise.context.SessionScoped;
    import java.io.Serializable;
    import static java.util.Collections.list;
    import java.util.List;
     
    /**
     *
     * @author HDThoreau */
    @Named(value = "beanBook")
    @SessionScoped
    public class BeanBook implements Serializable {
     
        HelperBook helper;
        private List<Book> list;
        private Book b;
     
        /**
         * Creates a new instance of BeanBook
         */
        public BeanBook() {
            helper = new HelperBook();
     
        }
     
        private void listOfBook(){
            list = helper.listBook();
     
        }
     
        /**
         * @return the list
         */
        public List<Book> getList() {
            listOfBook();
            return list;
        }
     
        /**
         * @param list the list to set
         */
        public void setList(List<Book> list) {
            this.list = list;
        }
     
        public Book getB() {
            return b;
        }
     
        public void setB(Book b) {
            this.b = b;
        }
     
        public void NewBook(){
            b = new Book();
            helper.addBook(b);
        }
     
     
     
    }


    Merci pour votre aide.
    HDThoreau.

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Le contrôleur qui appel ton JSP crée-t-il un l'objet b ?
    Car, tel qu'est construit ta JSP, il est supposé que l'objet beanBook.b est non nul.

    Tu as donc deux solutions pour adresser se problème :
    1. Instancier beanBook.b avant l'appel de cette JSP.
    Exemple de code qui devrait fonctionné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public BeanBook() {
            helper = new HelperBook();
            b = new Book();
        }
    2. Ne pas utiliser l'objet b. Et déclarer directement les valeurs de ton champs dans ton bean.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //private Book b;
    // Note b est à conservé si utilisé dans d'autre JSP ou dans du code métier Java.
    private String auteur;
    private String editeur;
    private String titre;
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Auteur  : <h:inputText id="auteur" value="#{beanBook.auteur}"/><br/>
                Editeur :<h:inputText id="editeur" value="#{beanBook.editeur}"/><br/>
                Titre   :<h:inputText id="titre" value="#{beanBook.titre}"/><br/>


    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    merci pour ta réponse, j'ai donc changé en conséquence mais j'ai un nouveau message d'erreur : javax.el.MethodNotFoundException: /addBook.xhtml @13,77 action="#{beanBook.newBook}": Method not found: com.webapplicationbook.ejb.BeanBook@68a2a057.newBook().

    voici les modifications dans le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <ui:define name="content">
            <h2>Ajouter un nouveau livre</h2>
            <h:form>
                Auteur  : <h:inputText id="auteur" value="#{beanBook.auteur}"/><br/>
                Editeur :<h:inputText id="editeur" value="#{beanBook.editeur}"/><br/>
                Titre   :<h:inputText id="titre" value="#{beanBook.titre}"/><br/>
                <h:commandButton action="#{beanBook.newBook}" value="Add Book"/>
     
                <br/>
                <h:commandLink action="index" value="Retour à liste des livres"/>
            </h:form>
        </ui:define>
    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
    @Named(value = "beanBook")
    @SessionScoped
    public class BeanBook implements Serializable {
     
        HelperBook helper;
        private List<Book> list;
        private String Auteur;
        private String Editeur;
        private String Titre;
     
        /**
         * Creates a new instance of BeanBook
         */
        public BeanBook() {
            helper = new HelperBook();
     
        }
     
        private void listOfBook(){
            list = helper.listBook();
     
        }
     
        /**
         * @return the list
         */
        public List<Book> getList() {
            listOfBook();
            return list;
        }
     
        /**
         * @param list the list to set
         */
        public void setList(List<Book> list) {
            this.list = list;
        }
     
     
     
        public void NewBook(){
     
            helper.addBook(new Book(getAuteur(), getEditeur(), getTitre()));
        }
     
        /**
         * @return the Auteur
         */
        public String getAuteur() {
            return Auteur;
        }
     
        /**
         * @param Auteur the Auteur to set
         */
        public void setAuteur(String Auteur) {
            this.Auteur = Auteur;
        }
     
        /**
         * @return the Editeur
         */
        public String getEditeur() {
            return Editeur;
        }
     
        /**
         * @param Editeur the Editeur to set
         */
        public void setEditeur(String Editeur) {
            this.Editeur = Editeur;
        }
     
        /**
         * @return the Titre
         */
        public String getTitre() {
            return Titre;
        }
     
        /**
         * @param Titre the Titre to set
         */
        public void setTitre(String Titre) {
            this.Titre = Titre;
        }
     
     
     
    }
    la méthode newBook est pourtant bien visible dans le beans.

    HDThoreau

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    Boujour,

    oups problème de casse, ma méthode commencait avec une majuscule et mon appel par une minuscule.

    la solution de kolodz résout mon problème, merci à toi.

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

Discussions similaires

  1. [INSERT] Erreur lors de l'ajout d'un objet
    Par bouchette63 dans le forum DB2
    Réponses: 3
    Dernier message: 30/08/2006, 09h32
  2. Erreur lors de l' utilisation des objets ADO
    Par aityahia dans le forum Bases de données
    Réponses: 10
    Dernier message: 24/03/2006, 13h46
  3. Message d'erreur lors d'utilisation d'un Objet
    Par dirty_boy dans le forum Langage
    Réponses: 3
    Dernier message: 28/10/2005, 16h16
  4. Réponses: 3
    Dernier message: 08/10/2005, 14h57
  5. Erreur lors de l'ajout d'une table
    Par FredMines dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/07/2005, 13h13

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