Pb AJOUT d'1 nouvel enregistrement jsf/hibern
lucky82
Messages postés
89
Statut
Membre
-
JustForYou -
JustForYou -
bONJOUR TOUT LE MONDE,
je travaille avec hibernate 2 et jsf 1.2 et Oracle 10g sous eclipse europa.
je suis bloquée ca fait 4 jours sur un probleme que j'ai avec jsf/hibernate,
donc, j'ai deux tables: programme et devises, dont voilà les fichier .hbm:
Programme.hbm
devises.hbm
et ma page jsf qui insere un nouveau programme dans la table programme (ges_programme_ajouter.jsp) est:
les classes beans je les ai crée automatiquement à l'aide de hibernate synchronizer sous eclipse europa, auxequls j'ai ajouté les deux méthodes suivantes:
dans Programme.java
FICHIER Devises.java
lors de l'execution du fichierr .jsf, je recois cette exception:
Merci de m'aider
je travaille avec hibernate 2 et jsf 1.2 et Oracle 10g sous eclipse europa.
je suis bloquée ca fait 4 jours sur un probleme que j'ai avec jsf/hibernate,
donc, j'ai deux tables: programme et devises, dont voilà les fichier .hbm:
Programme.hbm
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.org/dtd/hibernate-mapping-2.0.dtd" > <hibernate-mapping package="com.projet.hibernate"> <class name="Programme" table="PROGRAMME" dynamic-update="true" dynamic-insert="true" select-before-update="false"> <id column="ID_PROGRAMME" name="IdProgramme" type="integer" > <generator class="increment" /> </id> <property column="DESCRIPTION_PROGRAMME" length="200" name="DescriptionProgramme" not-null="false" type="string" /> <property column="OBJET_PROGRAMME" length="200" name="ObjetProgramme" not-null="false" type="string" /> <property column="REGLEMENTATION_PROGRAMME" length="200" name="ReglementationProgramme" not-null="false" type="string" /> <property column="OBSERVATION_PROGRAMME" length="200" name="ObservationProgramme" not-null="false" type="string" /> <property column="MONTANT_PROGRAMME" length="126" name="MontantProgramme" not-null="false" type="java.lang.Float" /> <property column="DESIGNATION_PROGRAMME" length="200" name="DesignationProgramme" not-null="false" type="string" /> <many-to-one class="Devises" name="IdDevise" not-null="true" cascade="all" > <column name="ID_DEVISE" /> </many-to-one> </class> </hibernate-mapping>
devises.hbm
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.org/dtd/hibernate-mapping-2.0.dtd" > <hibernate-mapping package="com.projet.hibernate"> <class name="Devises" table="DEVISES"> <id column="ID_DEVISE" name="IdDevise" type="integer" > <generator class="vm" /> </id> <property column="NOM_DEVISE" length="20" name="NomDevise" not-null="false" type="string" /> <property column="PAYS_DEVISE" length="20" name="PaysDevise" not-null="false" type="string" /> <property column="DATETAUXCHANGE_DEVISE" length="20" name="DatetauxchangeDevise" not-null="false" type="string" /> <property column="TAUXCHANGE_DEVISE" length="126" name="TauxchangeDevise" not-null="false" type="java.lang.Float" /> <set inverse="true" name="PROGRAMMESet" lazy="true" cascade="all" > <key column="ID_DEVISE" /> <one-to-many class="Programme" /> </set> </class> </hibernate-mapping>
et ma page jsf qui insere un nouveau programme dans la table programme (ges_programme_ajouter.jsp) est:
<%@taglib uri="https://www.oracle.com/java/technologies/" prefix="f" %> <%@taglib uri="https://www.oracle.com/java/technologies/" prefix="h" %> <%@taglib uri="https://www.oracle.com/java/technologies/" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <f:view> <html> <head> <title>Gestion des programmes: Ajout</title> <link rel="stylesheet" href="extra.css" type="text/css"></link> <script language="JavaScript" src="JScripts.js"></script> </head> <body> <h:form> <table width="752" border="1" cellspacing="2" class="texte"> <tr> <td width="207">Désignation</td> <td colspan="2"><h:inputText id="designationProgramme" value="#{programme.designationProgramme}" /></td> </tr> <tr> <td>Objet</td> <td colspan="2"><h:inputTextarea id="objetProgramme" value="#{programme.objetProgramme}" /></td> </tr> <tr> <td>Description</td> <td colspan="2"><h:inputTextarea id="descriptionProgramme" value="#{programme.descriptionProgramme}" /></td> </tr> <tr> <td style="width: 192px">Observation</td> <td colspan="2"><h:inputTextarea id="observationProgramme" value="#{programme.observationProgramme}" /></td> </tr> <tr> <td >Montant</td> <td style="width: 291px"><h:inputText id="montantProgramme" value="#{programme.montantProgramme}" style="width: 113px"/> <h:selectOneMenu value="#{programme.idDevise.idDevise}" > <f:selectItems id="idDevise" value="#{devises.listeDevises}"/> </h:selectOneMenu> </td> <td width="265" style="width: 133px"> </td> </tr> <tr> <td >Reglements</td> <td colspan="2"> <h:selectOneMenu value='#{programme.reglementationProgramme}' > <f:selectItem itemLabel="Directive BM" itemValue="Directive BM" /> <f:selectItem itemLabel="Reglementation internationnale" itemValue="Reglementation internationnale"/> </h:selectOneMenu> </td> </tr> <tr> <td align="center" height="58" colspan="3"> <h:commandButton value="Ajouter" action="#{programme.ValiderForm}" ></h:commandButton> <h:commandButton value="Annuler" ></h:commandButton> </td> </tr> </table> </h:form> </body> </html> </f:view>
les classes beans je les ai crée automatiquement à l'aide de hibernate synchronizer sous eclipse europa, auxequls j'ai ajouté les deux méthodes suivantes:
dans Programme.java
private List<Programme> ListeProgrammes=null;
public void ValiderForm(){
int IdProgramme=new Integer(44);;
String Designation=this.getDesignationProgramme();
String Objet=this.getObjetProgramme();
String Description=this.getDescriptionProgramme();
String Observation=this.getObservationProgramme();
Float Montant=this.getMontantProgramme();
Float MontantdirhamProgramme=this.getMontantdirhamProgramme();
String Reglementation=this.getReglementationProgramme();
//insertion dans la table COMPTE
try {
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Programme prog = new Programme();
prog.setIdProgramme(IdProgramme);
prog.setObjetProgramme(Objet);
prog.setDesignationProgramme(Designation);
prog.setDescriptionProgramme(Description);
prog.setObservationProgramme(Observation);
prog.setMontantProgramme(Montant);
prog.setMontantdirhamProgramme(MontantdirhamProgramme);
prog.setReglementationProgramme(Reglementation);
Devises dvs=new Devises();
int IdDevise=this.getIdDevise().getIdDevise();
dvs.getDetailDevise(IdDevise);
prog.setIdDevise(dvs);
session.save(prog);
System.out.println("Données prog enregistrées");
tx.commit();
HibernateUtil.closeSession();
System.out.println("transaction validée, session fermée");
} catch (HibernateException e) {
e.printStackTrace();
}
}
FICHIER Devises.java
private List<SelectItem> ListeDevises=null;
public Devises getDetailDevise(int IdDevises){
Devises ddvs=new Devises();
//lecture des comptes existants à partir de la table compte
try {
Session session = HibernateUtil.currentSession();
List list = session.find("from Devises where IdDevises="+IdDevises);
ddvs = (Devises)list.get(0);
HibernateUtil.closeSession();
} catch (HibernateException e) {
e.printStackTrace();
}
return ddvs;
}
public List<SelectItem> getListeDevises(){
//lecture des comptes existants à partir de la table compte
try {
Session session = HibernateUtil.currentSession();
List list = session.find("from Devises");
Iterator it = list.iterator();
ListeDevises= new ArrayList<SelectItem>();
while(it.hasNext()) {
Devises dvs = (Devises)it.next();
System.out.println("IdDevise = "+dvs.getIdDevise()+" devise Nom= "+dvs.getNomDevise());
ListeDevises.add(new SelectItem(dvs.getIdDevise(),dvs.getNomDevise()));
}
HibernateUtil.closeSession();
} catch (HibernateException e) {
e.printStackTrace();
}
return ListeDevises;
}
lors de l'execution du fichierr .jsf, je recois cette exception:
exception
javax.servlet.ServletException: /ges_programmes_ajouter.jsp(45,5) '#{programme.idDevise.idDevise}' Target Unreachable, 'idDevise' returned null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
cause mère
org.apache.jasper.el.JspPropertyNotFoundException: /ges_programmes_ajouter.jsp(45,5) '#{programme.idDevise.idDevise}' Target Unreachable, 'idDevise' returned null
org.apache.jasper.el.JspValueExpression.getType(JspValueExpression.java:61)
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:92)
com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(MenuRenderer.java:188)
com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:301)
javax.faces.component.UIInput.getConvertedValue(UIInput.java:942)
javax.faces.component.UIInput.validate(UIInput.java:868)
javax.faces.component.UIInput.executeValidate(UIInput.java:1072)
javax.faces.component.UIInput.processValidators(UIInput.java:672)
javax.faces.component.UIForm.processValidators(UIForm.java:235)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1053)
javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:673)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/6.0.16.
Merci de m'aider
A voir également:
- Pb AJOUT d'1 nouvel enregistrement jsf/hibern
- Enregistrement mp3 gratuit - Télécharger - Streaming audio
- Erreur lors de l'enregistrement du contact - Forum Xiaomi
- A ajouté un nouvel appareil à cette conversation ✓ - Forum Facebook Messenger
- Ajout rapide snap - Forum Snapchat
- Ajout snap sans rien d'écrit - Forum Snapchat
2 réponses
bonjour,
moi aussi j'ai rencontré le meme probleme que vous ,est ce qu'il ya quelqu'un qui est arrivé à une solution?
lucky82 si vous ête arriver à une solution, s'il vous plais passe moi la réponse je suis vraiment bloquée et Merci d'avance.
moi aussi j'ai rencontré le meme probleme que vous ,est ce qu'il ya quelqu'un qui est arrivé à une solution?
lucky82 si vous ête arriver à une solution, s'il vous plais passe moi la réponse je suis vraiment bloquée et Merci d'avance.
Changer tes fichiers sur cette forme :
hibernate.cfg.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.org/dtd/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- local connection properties -->
<property name="hibernate.connection.url">Votre URL</property>
<property name="hibernate.connection.driver_class">Votre Driver</property>
<property name="hibernate.connection.username">login</property>
<property name="hibernate.connection.password" />
<!-- property name="hibernate.connection.pool_size"></property -->
<!-- dialect for Oracle : choisir l'un des deux
1- # Oracle (any version) - org.hibernate.dialect.OracleDialect
2- # Oracle 9 - org.hibernate.dialect.Oracle9Dialect -->
<property name="dialect">Votre choix</property>
<!--********-->
<property name="hibernate.show_sql">false</property>
<property name="hibernate.use_outer_join">true</property>
<!-- Mettre en commentaire
<property name="hibernate.transaction.factory_class">
net.sf.hibernate.transaction.JTATransactionFactory
</property>
<property name="jta.UserTransaction">java:comp/UserTransaction</property>
//-->
<!--Ajouter les lignes suivants-->
<property name="hibernate.transaction.factory_class">
net.sf.hibernate.transaction.JDBCTransactionFactory
</property>
<mapping resource="Personne.hbm" />
</session-factory>
</hibernate-configuration>
Personne.hbm
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.org/dtd/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="hiber.Personne" table="Personne">
<id name="Id" type="integer">
<column name="id" sql-type="int(4)"/>
<generator class="assigned" /> <!-- ou bien class="increment" d'une façon automatique -->
</id>
<property name="Nom" type="string">
<column name="nom" sql-type="char(20)" not-null="true"/>
</property>
<property name="Prenom" type="string">
<column name="prenom" sql-type="char(20)" not-null="true"/>
</property>
</class>
</hibernate-mapping>
Bon chance :)
hibernate.cfg.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.org/dtd/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- local connection properties -->
<property name="hibernate.connection.url">Votre URL</property>
<property name="hibernate.connection.driver_class">Votre Driver</property>
<property name="hibernate.connection.username">login</property>
<property name="hibernate.connection.password" />
<!-- property name="hibernate.connection.pool_size"></property -->
<!-- dialect for Oracle : choisir l'un des deux
1- # Oracle (any version) - org.hibernate.dialect.OracleDialect
2- # Oracle 9 - org.hibernate.dialect.Oracle9Dialect -->
<property name="dialect">Votre choix</property>
<!--********-->
<property name="hibernate.show_sql">false</property>
<property name="hibernate.use_outer_join">true</property>
<!-- Mettre en commentaire
<property name="hibernate.transaction.factory_class">
net.sf.hibernate.transaction.JTATransactionFactory
</property>
<property name="jta.UserTransaction">java:comp/UserTransaction</property>
//-->
<!--Ajouter les lignes suivants-->
<property name="hibernate.transaction.factory_class">
net.sf.hibernate.transaction.JDBCTransactionFactory
</property>
<mapping resource="Personne.hbm" />
</session-factory>
</hibernate-configuration>
Personne.hbm
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.org/dtd/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="hiber.Personne" table="Personne">
<id name="Id" type="integer">
<column name="id" sql-type="int(4)"/>
<generator class="assigned" /> <!-- ou bien class="increment" d'une façon automatique -->
</id>
<property name="Nom" type="string">
<column name="nom" sql-type="char(20)" not-null="true"/>
</property>
<property name="Prenom" type="string">
<column name="prenom" sql-type="char(20)" not-null="true"/>
</property>
</class>
</hibernate-mapping>
Bon chance :)