probleme d'ajout d'un nouveau enregistrement avec jsf1.2/hibernate2
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 (générés par hibernate synchroniser ):
Programme.hbm
Code:
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
|
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/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
Code:
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
|
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/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:
Code:
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
|
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" 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="#{devises.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
Code:
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
|
private List<Programme> ListeProgrammes=null;
public void ValiderForm(){
Devises dvs=new Devises();
int IdDevise=dvs.getIdDevise();
System.out.println("IdDevise = "+IdDevise);
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();
System.out.println("IdProgramme = "+IdProgramme);
System.out.println("Designation saisie = "+Designation);
System.out.println("Objet saisi = "+Objet);
System.out.println("Description saisi = "+Description);
System.out.println("Observation saisi = "+Observation);
System.out.println("Montant saisi = "+Montant);
System.out.println("MontantdirhamProgramme saisi = "+MontantdirhamProgramme);
System.out.println("Reglementation saisi = "+Reglementation);
} |
FICHIER Devises.java
Code:
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
|
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:
Code:
1 2 3 4 5 6 7 8 9 10
|
exception
javax.servlet.ServletException: #{programme.ValiderForm}: java.lang.NullPointerException
javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
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