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

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [javax.el.PropertyNotFoundException] Problème avec JBoss-Seam
    Bonjour à tous,

    Je viens de commencer un projet de création d'un site avec les technologies EJB/JPA et seam, donc j'ai créer deux projet (sous eclipse), un projet ejb et un web .Quand je deploie le jar et le war tout va bien et j'ai mon formulaire (enregistrement.xhtml) qui s'affiche correctement, mais quand je le rempli et que je valide j'ai l'erreur suivante:
    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
    type Exception report
     
    message 
     
    description The server encountered an internal error () that prevented it from fulfilling this request.
     
    exception 
     
    javax.servlet.ServletException: /enregistrement.xhtml @15,73 value="#{utilisateur.email}": Target Unreachable, identifier 'utilisateur' resolved to null
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
    	org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
     
     
    root cause 
     
    javax.el.PropertyNotFoundException: /enregistrement.xhtml @15,73 value="#{utilisateur.email}": Target Unreachable, identifier 'utilisateur' resolved to null
    	com.sun.facelets.el.TagValueExpression.getType(TagValueExpression.java:62)
    	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.UIComponentBase.processValidators(UIComponentBase.java:1033)
    	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
    	javax.faces.component.UIForm.processValidators(UIForm.java:229)
    	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
    	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)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
    	org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
    	org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    	org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
    	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


    mon fichier enregistrement.xhtml :
    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
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" 
    	xmlns:s="http://jboss.com/products/seam/taglib"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:f="http://java.sun.com/jsf/core">
    	<head>
    		<title>Enregistrer un nouvel utilisateur</title>
    	</head>
    	<body>
    		<f:view>
    			<h:form>
    				<s:validateAll>
    					<h:panelGrid columns="2">
    						Email: <h:inputText value="#{utilisateur.email}" required="true"/>
    						Password: <h:inputSecret value="#{utilisateur.motDePasse}" required="true"/>
    						Nom: <h:inputText value="#{utilisateur.nom}" required="true"/>
    						Prenom: <h:inputText value="#{utilisateur.prenom}" required="true"/>
    						Age: <h:inputText value="#{utilisateur.age}" required="true"/>
    						Profession: <h:inputText value="#{utilisateur.profession}" required="true"/>
    						Adresse: <h:inputText value="#{utilisateur.adresse}" required="true"/>
    						Telephone: <h:inputText value="#{utilisateur.telephone}" required="true"/>						
    					</h:panelGrid>
    				</s:validateAll>
    			<h:messages/>
    			<h:commandButton value="Register" action="#{utilisateur.createUser}" />
    			</h:form>
    		</f:view>
    	</body>
    </html>

    Utilisateur.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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
     
    @Entity
    @Name("utilisateur")
    @Scope(SESSION)
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name = "PROFIL", discriminatorType = DiscriminatorType.STRING)
    @Table(name = "UTILISATEUR")
     
    public class Utilisateur implements Serializable {
     
    	private static final long serialVersionUID = -8857028078586206554L;
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	@Column(name = "ID")
    	protected int id;
     
    	@Column(name = "EMAIL", nullable = false, unique = true)
    	protected String email;
     
    	@Column(name = "MOT_DE_PASSE", nullable = true, length = 15)
    	protected String motDePasse;
     
    	@Column(name = "NOM", nullable = false, length = 100)
    	protected String nom;
     
    	@Column(name = "PRENOM", nullable = false, length = 50)
    	protected String prenom;
     
    	@Column(name = "AGE", nullable = false, length = 3)
    	protected int age;
     
    	@Column(name = "PROFESSION", nullable = false, length = 100)
    	protected String profession;
     
    	@Column(name = "ADRESSE", nullable = false)
    	protected String adresse;
     
    	@Column(name = "TELEPHONE", nullable = false, length = 10)
    	protected String telephone;
     
    	public Utilisateur() {
    	}
     
    	public Utilisateur(int id) {
    		this.id = id;
    	}
     
    	public Utilisateur(String email, String motDePasse, String nom,
    			String prenom, int age, String profession, String adresse,
    			String telephone) {
    		this.email=email;
    		this.motDePasse=motDePasse;
    		this.nom=nom;
    		this.prenom=prenom;
    		this.age=age;
    		this.profession=profession;
    		this.adresse=adresse;
    		this.telephone=telephone;
    	}
     
    	public int getId() {
    		return id;
    	}
     
    	public String getEmail() {
    		return email;
    	}
     
    	public void setEmail(String email) {
    		this.email = email;
    	}
     
    	public String getMotDePasse() {
    		return motDePasse;
    	}
     
    	public void setMotDePasse(String motDePasse) {
    		this.motDePasse = motDePasse;
    	}
     
    	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 int getAge() {
    		return age;
    	}
     
    	public void setAge(int age) {
    		this.age = age;
    	}
     
    	public String getProfession() {
    		return profession;
    	}
     
    	public void setProfession(String profession) {
    		this.profession = profession;
    	}
     
    	public String getAdresse() {
    		return adresse;
    	}
     
    	public void setAdresse(String adresse) {
    		this.adresse = adresse;
    	}
     
    	public String getTelephone() {
    		return telephone;
    	}
     
    	public void setTelephone(String telephone) {
    		this.telephone = telephone;
    	}
     
    	protected Object clone() throws CloneNotSupportedException {
    		return (Utilisateur) super.clone();
    	}
     
    	public boolean equals(Object obj) {
    		boolean result = false;
     
    		if (obj == this) {
    			result = true;
    		} else {
    			if (!(obj instanceof Utilisateur)) {
    				result = false;
    			} else {
    				Utilisateur u = (Utilisateur) obj;
     
    				if (!getEmail().equals(u.getEmail())) {
    					result = false;
    				} else if (!getNom().equals(u.getNom())) {
    					result = false;
    				} else if (!getPrenom().equals(u.getPrenom())) {
    					result = false;
    				} else {
    					result = true;
    				}
    			}
    		}
     
    		return result;
    	}
     
    	public String toString() {
    		return this.getId() + " : " + this.getEmail() + " - " + this.getNom()
    				+ " " + this.getPrenom();
    	}
     
     
     
    	public void createUser(){
     
    		System.out.println("public String ");
     
    	}
    }
    ServiceBean.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
     
    @Stateless
    @Name("register")
    public class ServiceBean implements Service {
     
    	// private UtilisateurDAO dao;
    	//
    	  @In
    	   private Utilisateur utilisateur;
    //	   
    	   @PersistenceContext//(unitName="LocAgenceBD")
    	   private EntityManager em;
     
    	   @Logger
    	   private Log log;
     
    	@SuppressWarnings("unchecked")
    	public String createUser() {
    		List existing = em.createQuery("select email from Utilisateur where email=#{utilisateur.email}").getResultList();
    		if ( existing.size()==0 )
    	      {
    	         em.persist(utilisateur);
    	         log.info("Registered new user with email #{utilisateur.email}");
    	         return "/welcomeMembre.xhtml";
    	      }
    	      else
    	      {
    	         //FacesMessages.instance().add("email User #{utilisateur.email} already exists");
    	         return null;
    	      }
    		//return "Utilisateur créé";
    	}
     
    }
    Je trouve cela très bizzare car j'ai nommé la classe Utilisateur (@Name("utilisateur") ) et j'ai bien un attribut email...

    Merci pour votre aide

  2. #2
    Membre du Club
    Inscrit en
    mars 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : mars 2006
    Messages : 103
    Points : 49
    Points
    49
    Par défaut
    le message que t as veux dir que ton objet utilisateur est null, est ce que t as verifié ça?

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : avril 2013
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Demande de rèponse
    Bonjour à tous,
    j'ai rencontré le même erreur lors de du déploiement de mon application, tout en utilisant les même outil citées en haut ;
    Alors quelqu'un peut m'aider à surmonter cette erreur ? et merci d'avance

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2008
    Messages
    1 479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juillet 2008
    Messages : 1 479
    Points : 2 083
    Points
    2 083
    Par défaut
    salut,
    pour le probleme mentionné ci haut, il fallait utiliser une syntaxe de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      serviceBean.utilisateur.email
    car tu ne peux pas acceder directement depuis une fichier xhtml a une entity, il faudra passer par un managedBean ou Named(CDI)
    Eric

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/01/2013, 12h12
  2. Problème avec JBoss et Eclipse
    Par badr_fr dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 17/10/2009, 15h23
  3. Conception d'une application avec JBoss Seam
    Par mimosah dans le forum Seam
    Réponses: 0
    Dernier message: 18/05/2009, 21h09
  4. Problème avec jboss et jbpm
    Par cathylacrevette dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 20/02/2009, 12h45
  5. Problème avec JBOSS
    Par zinia dans le forum Wildfly/JBoss
    Réponses: 6
    Dernier message: 10/06/2008, 17h25

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