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

JSF Java Discussion :

Probléme ajout enregistrement dans 2 tables liées


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut Probléme ajout enregistrement dans 2 tables liées
    Bonjour tout le monde

    je suis entrain de developper une application jsf/hibernate . et j'ai deux tables liées : etudiant et ecole
    mon probléme est le suivant lors d'ajout d'un enregistrement
    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
     
    javax.servlet.ServletException: /index.jsp(50,8) '#{etudiant.ecole.idEcole}' Target Unreachable, 'ecole' returned null
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
     
     
    cause mère 
     
    org.apache.jasper.el.JspPropertyNotFoundException: /index.jsp(50,8) '#{etudiant.ecole.idEcole}' Target Unreachable, 'ecole' returned null
    	org.apache.jasper.el.JspValueExpression.getType(JspValueExpression.java:61)
    	com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:81)
    	javax.faces.component.UIInput.getConvertedValue(UIInput.java:934)
    	javax.faces.component.UIInput.validate(UIInput.java:860)
    	javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
    	javax.faces.component.UIInput.processValidators(UIInput.java:666)
    	javax.faces.component.UIForm.processValidators(UIForm.java:229)
    	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030)
    	javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662)
    	com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    code EtudiantBean.java
    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
     
    package beans;
     
    import mapping.Ecole;
    import mapping.Etudiant;
     
     
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    public class EtudiantBean {
     
    private String id;
    private String nom;
    private String prenom;
    private String f_id_ecole;
    private Ecole ecole;
    public String getId() {
    	return id;
    }
    public void setId(String id) {
    	this.id = id;
    }
    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 getF_id_ecole() {
    	return f_id_ecole;
    }
    public void setF_id_ecole(String f_id_ecole) {
    	this.f_id_ecole = f_id_ecole;
    }
    public Ecole getEcole() {
    	return ecole;
    }
    public void setEcole(Ecole ecole) {
    	this.ecole = ecole;
    } 
    public String inserer()
       {
     
     
    		 Session session=mapping.HibernateSessionFactory.getSession();
             org.hibernate.Query query = session.createQuery("from Ecole as user where user.idEcole='"+f_id_ecole+"'");
             ecole = (Ecole)query.list().get(0);
     
             Transaction tx;
         	tx=session.beginTransaction();
         	 Etudiant V=new Etudiant();
             V.setId(id);
     
             V.setNom(nom);
             V.setPrenom(prenom);
     
            V.setEcole(ecole);
     
             session.save(V);
             tx.commit();
             return "ok";
     
     
        }
    }
    page index.jsp
    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
     
    <%@ page language="java" pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
     
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    	<base href="<%=basePath%>">
     
    	<title>My JSF 'index.jsp' starting page</title>
     
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
     
    </head>
     
    <body>
    	<f:view>
     
    		<center>
     <h:form id="update">
     <h2>Pour ajouter un étudiant</h2>  
     
    	<table>
    	<tr>
    	<td><h:outputText value="L'identifiant : " /></td>
    	<td><h:inputText value="#{etudiant.id}" /></td>
    	</tr>
       <tr>
       <td> <h:outputText value="  Nom   : " /></td>
      <td> <h:inputText value="#{etudiant.nom}" /></td>
        </tr>
        <tr>
        <td> <h:outputText value="Prénom: " /></td>
      <td>  <h:inputText value="#{etudiant.prenom}" /></td>
        </tr>
        <tr>
        <td><h:outputText value="  Ecole   : " /></td>
        <td><h:inputText value="#{etudiant.ecole.idEcole}" /></td>
         </tr>
         </table>
         <h:commandButton value="Ajouter" action="#{etudiant.inserer}" />
         </h:form>
         </center>
    	</f:view>
    </body>
    </html>
    aidez moi svp

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    D'après ton code, le problème vient du fait que l'attribut ecole est null.
    En plus, tu as défini f_id_ecole dans ton bean, et tu ne t'en sers jamais...

    Il faut mettre dans le code JSF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:inputText value="#{etudiant.f_id_ecole}"/>
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ecole est null par défaut dans ton bean, donc lors de la soumission, il est impossible d'attribuer la valeur etudiant.ecole.id_ecole. Tu n'aurais pas confondu avec ta propriété f_id_ecole par hasard dans ton jsp?

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    ok merci mais comment catcher l'exeption IndexOutOfBoundsException

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Citation Envoyé par pipo7610 Voir le message
    ok merci mais comment catcher l'exeption IndexOutOfBoundsException
    Euh, c'est quoi le rapport ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    parceque lorsque j'ajoute un eleve dont le f_id_ecole ne figure pas dans les idecole de la table ecole ca génére cette exeption

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    montre déjà l'exception

  8. #8
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    C'est à toi de vérifier si l'ID renseigné est correct...
    Si ce n'est pas le cas, tu renvois une erreur de validation, en créant un message, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("L'ecole n'existe pas !"));
    Et dans la page JSF, tu places un <h:messages/> pour faire afficher ces messages...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par pipo7610 Voir le message
    parceque lorsque j'ajoute un eleve dont le f_id_ecole ne figure pas dans les idecole de la table ecole ca génére cette exeption
    Juste une remarque, ta base ne permet pas de mettre une clé étrangère qui n'existe pas. Il faut que l'id école saisie soit valide sinon ca va planter. Si le problème vient du faite que tu crée ton école en même temps que ton élève, hibernate gère ça tous seul si c'est dans la même transaction.

Discussions similaires

  1. ajout données dans deux tables liées
    Par nat2814 dans le forum IHM
    Réponses: 1
    Dernier message: 27/02/2009, 20h54
  2. Ajout enregistrement dans une table
    Par pkrvz dans le forum VBA Access
    Réponses: 18
    Dernier message: 15/05/2008, 22h11
  3. Problème de Type dans une table liée
    Par tangueros78 dans le forum Access
    Réponses: 19
    Dernier message: 16/03/2006, 09h14
  4. dupliquer un enregistrement dans un table liée
    Par RICHARDSEBIRE dans le forum Access
    Réponses: 9
    Dernier message: 24/02/2006, 11h57
  5. Réponses: 2
    Dernier message: 08/02/2006, 21h22

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