Bonjour ,

Je developpe un projet JEE avec Netbeans 6.7 , MySQL et le framework JSF . Une page parmi celles que j'ai développée concerne la mise à jour ( ou la modifications des donnees du profil déja enregistrees ) .

Le code JSP de cette page appelée "modify" 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
67
68
69
70
71
72
<%-- 
    Document   : modify
    Created on : 28 août 2009, 11:41:21
    Author     : DALI
--%>
 
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
 
<f:view>
<html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <title>JSP Page</title>
        </head>
        <body>
            <h1><h:outputText value="Hello World!"/></h1><h1>Create a New Account</h1>
 
 
        <h:form id="create">
            <h:panelGrid columns="3" border="0">
                First Name: <h:inputText id="firstname"
                                         requiredMessage="*"
                                         value="#{metier.c.firstname}"
                                         required="true"/>
                            <h:message for="create:firstname" style="color: red"/>
                Last Name: <h:inputText id="lastname"
                                        requiredMessage="*"
                                        value="#{metier.lastname}"
                                        required="true"/>
                           <h:message for="create:lastname" style="color: red"/>
 
                Mobile Phone: <h:inputText id="mobilephone"
                                         requiredMessage="*"
                                         value="#{metier.mobilephone}"
                                         required="true"/>
                          <h:message for="create:mobilephone" style="color: red"/>
                Company: <h:inputText id="company"
                                         requiredMessage="*"
                                         value="#{metier.company}"
                                         required="true"/>
                          <h:message for="create:company" style="color: red"/>
                Title: <h:inputText id="title"
                                         requiredMessage="*"
                                         value="#{metier.title}"
                                         required="true"/>
                          <h:message for="create:title" style="color: red"/>
                Department: <h:inputText id="department"
                                         requiredMessage="*"
                                         value="#{metier.department}"
                                         required="true"/>
                          <h:message for="create:department" style="color: red"/>
                Cams: <h:inputText id="cams"
                                         requiredMessage="*"
                                         value="#{metier.cams}"
                                         required="true"/>
                          <h:message for="create:cams" style="color: red"/>
            </h:panelGrid>
            <h:commandButton id="submit"
                             value="Update"
                             action="#{metier.update}"/>
            <h:messages style="color: red" globalOnly="true"/>
 
            </h:form>
 
        </body>
    </html>
    </f:view>


J'ai essayé ca avec la methode "update" de ma page " metier " mais lorsque j'appelle cette page j'obtient l'erreur suivant :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
DescriptionLe serveur a rencontré une erreur interne () qui l'a empêché de remplir cette requête.
 
Exception
 
javax.servlet.ServletException: Cible inaccessible, 'c' a renvoyé une valeur nulle
 
Cause racine
 
javax.el.PropertyNotFoundException: Cible inaccessible, 'c' a renvoyé une valeur nulle

Ma page "metier" est la 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
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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
package metier;
 
import Ent.Client;
import Ent.ClientFacadeLocal;
import java.util.Date ;
 
import javax.ejb.EJB;
import javax.ejb.Stateless;
 
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.servlet.http.HttpSession;
import javax.transaction.UserTransaction;
import java.util.List;
import java.util.ArrayList;
import javax.faces.model.*;
import javax.persistence.Query;
import javax.faces.model.ListDataModel;
import javax.persistence.Entity;
 
 
/**
 *
 * @author DALI
 */
@Stateless
public class metier {
      public static final String Client_SESSION_KEY = "client";
 
 EntityManager persistance;
    /** Creates a new instance of NewJSFManagedBean */
 
 
   @EJB
    private ClientFacadeLocal cf;
    private Client c;
 
 
    private String firstname;
    private String lastname;
    private String password;
    private String retypepassword ;
    private String login;
    private String mobilephone;
    private String company;
    private String title;
    private String department;
    private String cams;
    private int rightslevel;
    private Date insertiondate;
    private List<Client> mylist = new ArrayList<Client>();
    private DataModel mymodel;
 
 
    public metier () {}
 
    public Client getC() {
        return c;
    }
 
    public void setC(Client c) {
        this.c = c;
    }
    public ClientFacadeLocal getCf() {
        return cf;
    }
 
    public DataModel getMymodel()
    {
     return this.mymodel;
     }
 
 
     public String getFirstname() {
        return firstname;
    }
 
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
    public String getLastname() {
        return lastname;
    }
 
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }
    public String getLogin() {
        return login;
    }
 
    public void setLogin(String login) {
        this.login = login;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
    public String getRetypepassword() {
        return retypepassword;
    }
 
    public void setRetypepassword(String retypepassword) {
        this.retypepassword = retypepassword;
    }
    public String getMobilephone() {
        return mobilephone;
    }
 
    public void setMobilephone(String mobilephone) {
        this.mobilephone = mobilephone;
    }
    public String getCompany() {
        return company;
    }
 
    public void setCompany(String company) {
        this.company = company;
    }
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
    public String getDepartment() {
        return department;
    }
 
    public void setDepartment(String department) {
        this.department = department;
    }
    public String getCams() {
        return cams;
    }
 
    public void setCams(String cams) {
        this.cams = cams;
    }
    public int getRightslevel() {
        return rightslevel;
    }
 
    public void setRightslevel(int rightslevel) {
        this.rightslevel = rightslevel;
    }
 
public Date getInsertiondate() {
        return insertiondate;
    }
 
    public void setInsertiondate(Date insertiondate) {
        this.insertiondate = insertiondate;
    }
 
 
public String createuser()
{
 
     FacesContext context = FacesContext.getCurrentInstance();
 
c=cf.find(login);
 
    if (c == null) {
 
    if (!password.equals (retypepassword)){
 
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                                           "Login Failed password and retyped password don't match !",
                                           "The password specified is not correct.");
 
        context.addMessage(null, message);
         return null;}
    c= new Client();
    int rightslevel =1 ;
    insertiondate=new Date();
    c.setFirstname(firstname);
    c.setLastname(lastname);
    c.setLogin(login);
    c.setPassword(password);
    c.setMobilephone(mobilephone);
    c.setCompany(company);
    c.setTitle(title);
    c.setDepartment(department);
    c.setCams(cams);
    c.setRightslevel(rightslevel);
    c.setInsertiondate(insertiondate);
    cf.create(c);
   return "success";
    }
    else
    {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                                                    "Username '"
                                                      + login
                                                      + "' already exists!  ",
                                                    "Please choose a different username.");
            context.addMessage(null, message);
            return null;
        }
}
public String validate()
{
   FacesContext context = FacesContext.getCurrentInstance();
    c=cf.find(login);
 
    if (c != null) {
            if (!c.getPassword().equals(password)) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                                           "Login Failed!The password specified is not correct.",
                                           "The password specified is not correct.");
                context.addMessage(null, message);
                return null;
            }
 
            context.getExternalContext().getSessionMap().put(Client_SESSION_KEY, cf);
            return "validate";}
         else {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Login Failed!Username " +login +" does not exist.",
                    "Username '"
                    + login
                    +
                    "' does not exist.");
            context.addMessage(null, message);
            return null;
        }
 
}
 
public String create()
{
    return "create";
}
public String modify()
{  
 
 return "modify";
 
 
}
public String update()
{
    c=cf.find(login);
c.setFirstname(firstname);
    c.setLastname(lastname);
    c.setMobilephone(mobilephone);
    c.setCompany(company);
    c.setTitle(title);
    c.setDepartment(department);
    c.setCams(cams);
    cf.edit(c);
    return "updated";
}
public String remove()
{
    return "removed";
}
 
 public String logout() {
        HttpSession session = (HttpSession)
             FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        if (session != null) {
            session.invalidate();
        }
        return "logout";
 
    }
 
}

Quelqu'un a une idee ?
Merci bien .