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:
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
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 "); } }
Je trouve cela très bizzare car j'ai nommé la classe Utilisateur (@Name("utilisateur") ) et j'ai bien un attribut email...
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éé"; } }
Merci pour votre aide
Partager