Bonjour,

je commence à peine à développer avec J2EE. J'ai juste réussi à créer des EJB actuellement, et mes notions sont assez faibles.

j'utilise un environnement JBoss 4.0 avec le JDK 1.4. La version de JSF que j'utilise est MyFaces.

J'ai beau déployer mes fichiers, je ne cesse d'obtenir des erreurs serveur.

Parfois, l'erreur est que la valeur renvoyée est null, parfois c'est qu'il ne peut trouver de valeurs pour l'expression se trouvant dans mon fichier .jsp.

Comme je débute et que je suis le seul dans l'entreprise à utiliser cette technologie, j'utilise divers tutoriaux et livres, mais aucun n'est capable de résoudre mon problème. J'ai suivi ce tutoriel (MyEclipse - JSF Login Demo Tutorial), et mon premier bean est celui écrit dans cette application.

J'utilise en fait deux beans. Le premier est celui créé par le tutoriel et je n'ose le supprimer avant que le bean second bean fonctionne. Le second est un simple bean contenant un champ accessible en lecture seule (si j'ai bien compris).

Voici le second de mes deux 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
public class PatientBean {
  private SelectItem[] dispensateurs = null;
  public PatientBean() { }
 
  public void setDispensateurs(SelectItem[] dispensateurs) { this.dispensateurs = dispensateurs; }
 
  public SelectItem[] getDispensateurs() {
    if (dispensateurs == null) {
      dispensateurs = new SelectItem[2];
      dispensateurs[0] = new SelectItem(new Integer(1), "Dupont, Jean");
      dispensateurs[1] = new SelectItem(new Integer(2), "Dupuis, Jacques");
    }
    return dispensateurs;
  }
}
Je les ai (me semble-t-il) correctement déclarés dans le faces-config.xml :
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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
 
<faces-config>
  <application>
    <locale-config>
      <default-locale>fr</default-locale>
    </locale-config>
  </application>
   <managed-bean>
    <managed-bean-name>UserBean</managed-bean-name>
    <managed-bean-class>be.stluc.pcbw.bean.UserBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  <managed-bean>
    <managed-bean-name>patient</managed-bean-name>
    <managed-bean-class>be.stluc.pcbw.bean.PatientBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  <navigation-rule>
    <from-view-id>/welcome.jsp</from-view-id>
    <navigation-case>
      <to-view-id>/patientData.jsp</to-view-id>
    </navigation-case>
  </navigation-rule>
  <navigation-rule>
    <from-view-id>/index.jsp</from-view-id>
    <navigation-case>
      <to-view-id>/welcome.jsp</to-view-id>
    </navigation-case>
  </navigation-rule>
</faces-config>
et pour finir, ma page 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
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ 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>
  <f:view>
    <f:loadBundle basename="be.stluc.pcbw.MessageBundle" var="msgs" />
    <head>
      <base href="<%=basePath%>" />
      <title><h:outputText value="#{msgs.pageTitle}" /></title>
      <link rel="stylesheet" type="text/css" href="styles.css" />
    </head>
    <body>
      <p>
        <h:commandLink value="#{msgs.back}"></h:commandLink>
      </p>
      <h:selectOneListbox size="5">
        <f:selectItems value="#{patient.dispensateurs}"/>
      </h:selectOneListbox>
    </body>
  </f:view>
</html>
Les erreurs se produisent systématiquement à l'appel de #{patient.XXX} :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Cannot get value for expression '#{patient.dispensateurs}'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Value binding '#{patient.dispensateurs}'of UISelectItems with component-path {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /welcome.jsp][Class: javax.faces.component.html.HtmlForm,Id: dummy][Class: javax.faces.component.html.HtmlSelectOneListbox,Id: _id23][Class: javax.faces.component.UISelectItems,Id: _id24]} does not reference an Object of type SelectItem, SelectItem[], Collection or Map but of type : null
Et lorsque je tente de logger quelque chose, pas moyen d'avoir le résultat du log, comme si la ligne n'était jamais exécutée.

D'avance merci à ceux qui m'aideront.

Olivier