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 : 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
 
<?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 : 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
 
<?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 : 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
 
<%@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&eacute;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 : 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
 
 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 : 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
 
 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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