Bonjour ,

J'ai developpé une application web pour l'inscription en ligne en utilisant l'outil Visual JSF et la base de donnees Wampserver . Une de ses pages me pose un probleme . Le code JSP et le code java ne montrent aucun erreur mais la fenetre design me montre un message d'errreur qui est le suivant :


firstname:javax.el.Exception:javax.faces.el.PropertyNotFoundException:
PropertyNotFoundException:javaxLang.RuntimeException
java.sql.SQLException:jdbcRowSetXlmpl(connectJNDI)Unable to connect:
Access denied for use 'root'@'localhost'(using password:YES)

Cette page a pour role de permettre au client de modifier son compte .Pour cela on a besoin de récupérer les cordonnees du client a partir de la table user de la base de donnees . firstname est le champ reserve pour entrer le nom du client ,mais tout les autres champs montrent encore ce message .



Le code jsp est le suivant :



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
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : profile
Created on : 10 août 2009, 08:43:29
Author : NIDHAL
-->
<jsp:root version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:webuijsf="http://www.sun.com/webui/webuijsf">
<jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
<f:view>
<webuijsf:page id="page1">
<webuijsf:html id="html1">
<webuijsf:head id="head1">
<webuijsf:link id="link1" url="/resources/stylesheet.css"/>
</webuijsf:head>
<webuijsf:body id="body1" style="-rave-layout: grid">
<webuijsf:form binding="#{profile.form1}" id="form1">
<webuijsf:staticText id="staticText2" style="left: 96px; top: 216px; position: absolute" text="Login"/>
<webuijsf:staticText id="staticText4" style="left: 96px; top: 312px; position: absolute" text="Last name"/>
<webuijsf:staticText id="staticText5" style="position: absolute; left: 96px; top: 360px" text="Sexe"/>
<webuijsf:staticText id="staticText6" style="left: 96px; top: 648px; position: absolute" text="Department"/>
<webuijsf:staticText id="staticText7" style="left: 96px; top: 408px; position: absolute" text="Current Password"/>
<webuijsf:staticText id="staticText8" style="left: 96px; top: 456px; position: absolute" text="New Password"/>
<webuijsf:staticText id="staticText9" style="left: 96px; top: 504px; position: absolute" text="Retype New Password"/>
<webuijsf:staticText id="staticText10" style="left: 96px; top: 552px; position: absolute" text="Mobile Phone"/>
<webuijsf:staticText id="staticText11" style="left: 96px; top: 600px; position: absolute" text="Company"/>
<webuijsf:radioButtonGroup binding="#{profile.sexe}" columns="2" id="sexe" items="#{profile.sexeDefaultOptions.options}" style="left: 240px; top: 360px; position: absolute"/>
<webuijsf:passwordField binding="#{profile.currentpassword}" id="currentpassword" style="left: 240px; top: 408px; position: absolute" validatorExpression="#{profile.currentpasswordlengthValidator.validate}"/>
<webuijsf:passwordField binding="#{profile.newpassword}" id="newpassword" style="left: 240px; top: 456px; position: absolute" validatorExpression="#{profile.lengthValidator.validate}"/>
<webuijsf:passwordField binding="#{profile.retypenewpassword}" id="retypenewpassword" style="left: 240px; top: 504px; position: absolute"/>
<webuijsf:textField binding="#{profile.login}" id="login" style="left: 240px; top: 216px; position: absolute"/>
<webuijsf:textField binding="#{profile.firstname}" id="firstname" style="left: 216px; top: 264px; position: absolute" text="#{profile.userDataProvider.value['user.firstname']}"/>
<webuijsf:textField binding="#{profile.lastname}" id="lastname" style="left: 240px; top: 312px; position: absolute" text="#{profile.userDataProvider.value['user.lasttname']}"/>
<webuijsf:textField binding="#{profile.mobilephone}" id="mobilephone" style="left: 240px; top: 552px; position: absolute" text="#{profile.userDataProvider.value['user.mobilephone']}"/>
<webuijsf:textField binding="#{profile.company}" id="company" style="left: 240px; top: 600px; position: absolute" text="#{profile.userDataProvider.value['user.company']}"/>
<webuijsf:textField binding="#{profile.department}" id="department" style="left: 240px; top: 648px; position: absolute" text="#{profile.userDataProvider.value['user.department']}"/>
<webuijsf:message for="login" id="message1" showDetail="false" showSummary="true" style="left: 432px; top: 216px; position: absolute"/>
<webuijsf:message for="firstname" id="message2" showDetail="false" showSummary="true" style="left: 432px; top: 264px; position: absolute"/>
<webuijsf:message for="lastname" id="message3" showDetail="false" showSummary="true" style="left: 432px; top: 312px; position: absolute"/>
<webuijsf:message for="sexe" id="message4" showDetail="false" showSummary="true" style="left: 432px; top: 360px; position: absolute"/>
<webuijsf:message for="password" id="message5" showDetail="false" showSummary="true" style="left: 432px; top: 408px; position: absolute"/>
<webuijsf:message for="newpassword" id="message6" showDetail="false" showSummary="true" style="left: 432px; top: 456px; position: absolute"/>
<webuijsf:message for="retypenewpassword" id="message7" showDetail="false" showSummary="true" style="left: 432px; top: 504px; position: absolute"/>
<webuijsf:message for="mobilephone" id="message8" showDetail="false" showSummary="true" style="left: 432px; top: 552px; position: absolute"/>
<webuijsf:message for="company" id="message9" showDetail="false" showSummary="true" style="left: 432px; top: 600px; position: absolute"/>
<webuijsf:message for="department" id="message10" showDetail="false" showSummary="true" style="left: 432px; top: 648px; position: absolute"/>
<webuijsf:staticText id="staticText12" style="left: 96px; top: 696px; position: absolute" text="Title"/>
<webuijsf:staticText id="staticText13" style="left: 96px; top: 744px; position: absolute" text="Cams"/>
<webuijsf:staticText id="staticText14" style="left: 96px; top: 792px; position: absolute" text="Interests"/>
<webuijsf:textField binding="#{profile.title}" id="title" style="left: 240px; top: 696px; position: absolute" text="#{profile.userDataProvider.value['user.title']}"/>
<webuijsf:textField binding="#{profile.cams}" id="cams" style="left: 240px; top: 744px; position: absolute" text="#{profile.userDataProvider.value['user.cams']}"/>
<webuijsf:textField binding="#{profile.interests}" id="interests" style="left: 240px; top: 792px; position: absolute"/>
<webuijsf:message for="title" id="message11" showDetail="false" showSummary="true" style="left: 432px; top: 696px; position: absolute"/>
<webuijsf:message for="cams" id="message12" showDetail="false" showSummary="true" style="left: 432px; top: 744px; position: absolute"/>
<webuijsf:message for="interests" id="message13" showDetail="false" showSummary="true" style="left: 432px; top: 792px; position: absolute"/>
<webuijsf:button id="update" style="left: 95px; top: 864px; position: absolute; width: 72px" text="Update"/>
<webuijsf:messageGroup id="messageGroup1" style="left: 96px; top: 96px; position: absolute"/>
<webuijsf:staticText id="staticText1" style="left: 96px; top: 24px; position: absolute" text="Profile "/>
<webuijsf:staticText id="staticText3" style="left: 96px; top: 264px; position: absolute" text="First Name"/>
</webuijsf:form>
</webuijsf:body>
</webuijsf:html>
</webuijsf:page>
</f:view>
</jsp:root>



le code java de la page est le suivant :



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
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
 
package client;
 
import com.sun.data.provider.RowKey;
import com.sun.data.provider.impl.CachedRowSetDataProvider;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.Form;
import com.sun.webui.jsf.component.PasswordField;
import com.sun.webui.jsf.component.RadioButtonGroup;
import com.sun.webui.jsf.component.TextField;
import com.sun.webui.jsf.model.SingleSelectOptionsList;
import javax.faces.FacesException;
import javax.faces.validator.LengthValidator;
 
/**
* <p>Page bean that corresponds to a similarly named JSP page. This
* class contains component definitions (and initialization code) for
* all components that you have defined on this page, as well as
* lifecycle methods and event handlers where you may add behavior
* to respond to incoming events.</p>
*
* @version profile.java
* @version Created on 10 août 2009, 08:43:30
* @author NIDHAL
*/
 
public class profile extends AbstractPageBean {
// <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
 
/**
* <p>Automatically managed component initialization. <strong>WARNING:</strong>
* This method is automatically generated, so any user-specified code inserted
* here is subject to being replaced.</p>
*/
private void _init() throws Exception {
sexeDefaultOptions.setOptions(new com.sun.webui.jsf.model.Option[]{new com.sun.webui.jsf.model.Option("Homme", "Homme"), new com.sun.webui.jsf.model.Option("Femme", "Femme")});
userDataProvider.setCachedRowSet((javax.sql.rowset.CachedRowSet) getValue("#{SessionBean1.userRowSet}"));
passwordlengthValidator2.setMaximum(10);
passwordlengthValidator2.setMinimum(6);
}
private SingleSelectOptionsList sexeDefaultOptions = new SingleSelectOptionsList();
 
public SingleSelectOptionsList getSexeDefaultOptions() {
return sexeDefaultOptions;
}
 
public void setSexeDefaultOptions(SingleSelectOptionsList ssol) {
this.sexeDefaultOptions = ssol;
}
private LengthValidator passwordlengthValidator = new LengthValidator();
 
public LengthValidator getPasswordlengthValidator() {
return passwordlengthValidator;
}
 
public void setPasswordlengthValidator(LengthValidator lv) {
this.passwordlengthValidator = lv;
}
private CachedRowSetDataProvider userDataProvider = new CachedRowSetDataProvider();
 
public CachedRowSetDataProvider getuserDataProvider() {
return userDataProvider;
}
 
public void setuserDataProvider(CachedRowSetDataProvider crsdp) {
this.userDataProvider = crsdp;
}
private Form form1 = new Form();
 
public Form getForm1() {
return form1;
}
 
public void setForm1(Form f) {
this.form1 = f;
}
private TextField firstname = new TextField();
 
public TextField getFirstname() {
return firstname;
}
 
public void setFirstname(TextField tf) {
this.firstname = tf;
}
private TextField lastname = new TextField();
 
public TextField getLastname() {
return lastname;
}
 
public void setLastname(TextField tf) {
this.lastname = tf;
}
private RadioButtonGroup sexe = new RadioButtonGroup();
 
public RadioButtonGroup getSexe() {
return sexe;
}
 
public void setSexe(RadioButtonGroup rbg) {
this.sexe = rbg;
}
private PasswordField currentpassword = new PasswordField();
 
public PasswordField getPassword() {
return currentpassword;
}
 
public void setcurrentpassword(PasswordField pf) {
this.currentpassword = pf;
}
private PasswordField newpassword = new PasswordField();
 
public PasswordField getNewpassword() {
return newpassword;
}
 
public void setNewpassword(PasswordField pf) {
this.newpassword = pf;
}
private PasswordField retypenewpassword = new PasswordField();
 
public PasswordField getRetypenewpassword() {
return retypenewpassword;
}
 
public void setRetypenewpassword(PasswordField pf) {
this.retypenewpassword = pf;
}
private TextField mobilephone = new TextField();
 
public TextField getMobilephone() {
return mobilephone;
}
 
public void setMobilephone(TextField tf) {
this.mobilephone = tf;
}
private TextField company = new TextField();
 
public TextField getCompany() {
return company;
}
 
public void setCompany(TextField tf) {
this.company = tf;
}
private TextField department = new TextField();
 
public TextField getDepartment() {
return department;
}
 
public void setDepartment(TextField tf) {
this.department = tf;
}
private TextField title = new TextField();
 
public TextField getTitle() {
return title;
}
 
public void setTitle(TextField tf) {
this.title = tf;
}
private TextField cams = new TextField();
 
public TextField getCams() {
return cams;
}
 
public void setCams(TextField tf) {
this.cams = tf;
}
private TextField interests = new TextField();
 
public TextField getInterests() {
return interests;
}
 
public void setInterests(TextField tf) {
this.interests = tf;
}
private TextField login = new TextField();
 
public TextField getLogin() {
return login;
}
 
public void setLogin(TextField tf) {
this.login = tf;
}
private LengthValidator passwordlengthValidator2 = new LengthValidator();
 
public LengthValidator getPasswordlengthValidator2() {
return passwordlengthValidator2;
}
 
public void setPasswordlengthValidator2(LengthValidator lv) {
this.passwordlengthValidator2 = lv;
}
 
// </editor-fold>
 
/**
* <p>Construct a new Page bean instance.</p>
*/
public profile() {
}
 
/**
* <p>Callback method that is called whenever a page is navigated to,
* either directly via a URL, or indirectly via page navigation.
* Customize this method to acquire resources that will be needed
* for event handlers and lifecycle methods, whether or not this
* page is performing post back processing.</p>
*
* <p>Note that, if the current request is a postback, the property
* values of the components do <strong>not</strong> represent any
* values submitted with this request. Instead, they represent the
* property values that were saved for this view when it was rendered.</p>
*/
@Override
public void init() {
// Perform initializations inherited from our superclass
super.init();
// Perform application initialization that must complete
// *before* managed components are initialized
// TODO - add your own initialiation code here
 
// <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
// Initialize automatically managed components
// *Note* - this logic should NOT be modified
try {
_init();
} catch (Exception e) {
log("profile Initialization Failure", e);
throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
}
 
// </editor-fold>
// Perform application initialization that must complete
// *after* managed components are initialized
// TODO - add your own initialization code here
}
 
/**
* <p>Callback method that is called after the component tree has been
* restored, but before any event processing takes place. This method
* will <strong>only</strong> be called on a postback request that
* is processing a form submit. Customize this method to allocate
* resources that will be required in your event handlers.</p>
*/
@Override
public void preprocess() {
}
 
/**
* <p>Callback method that is called just before rendering takes place.
* This method will <strong>only</strong> be called for the page that
* will actually be rendered (and not, for example, on a page that
* handled a postback and then navigated to a different page). Customize
* this method to allocate resources that will be required for rendering
* this page.</p>
*/
@Override
public void prerender() {
this.currentpassword.setText(null);
this.newpassword.setText(null);
this.retypenewpassword.setText(null);
 
RowKey rowKey = getuserDataProvider().findFirst(
new String[] {"user.login"},
new Object[] {getSessionBean1().getLoggedInlogin()}
);
getuserDataProvider().setCursorRow(rowKey);
 
// rowKey = getuserDataProvider().findFirst(
// new String[] {"user.id"},
// new Object[] {getSessionBean1().getLoggedInlogin()}
// );
// getuserDataProvider().setCursorRow(rowKey);
}
 
/**
* <p>Callback method that is called after rendering is completed for
* this request, if <code>init()</code> was called (regardless of whether
* or not this was the page that was actually rendered). Customize this
* method to release resources acquired in the <code>init()</code>,
* <code>preprocess()</code>, or <code>prerender()</code> methods (or
* acquired during execution of an event handler).</p>
*/
@Override
public void destroy() {
userDataProvider.close();
}
 
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected RequestBean1 getRequestBean1() {
return (RequestBean1) getBean("RequestBean1");
}
 
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected ApplicationBean1 getApplicationBean1() {
return (ApplicationBean1) getBean("ApplicationBean1");
}
 
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected SessionBean1 getSessionBean1() {
return (SessionBean1) getBean("SessionBean1");
}
public String update_action() {
// TODO: Process the action. Return value is a navigation
// case name where null will return to the same page.
 
String thefirstname = (String) this.firstname.getText();
String thelastname = (String) this.lastname.getText();
RowKey rowKey;
// check if new password is a valid password and equals retyped password.
String thenewpassword = (String) this.newpassword.getText();
String theretypenewpassword = (String) this.retypenewpassword.getText();
if ( theretypenewpassword == null || ! thenewpassword.equals(theretypenewpassword.trim())) {
error("New password and retyped password do not match.");
return null;
}
String thecurrentpassword = (String) this.currentpassword.getText();
rowKey = getuserDataProvider().findFirst(
new String[] {"user.login", "user.password"},
new Object[] {getSessionBean1().getLoggedInlogin(), thecurrentpassword}
);
if (rowKey == null) {
error("Could not login with current password.");
return null;
}
 
getuserDataProvider().setValue("user.password", rowKey, thenewpassword);
getuserDataProvider().commitChanges();
 
getuserDataProvider().commitChanges();
getSessionBean1().setLoggedInUserName(
getuserDataProvider().getValue("user.firstname")
+ " "
+ getuserDataProvider().getValue("user.lastname")
);
 
return "lists";
}
 
 
}

Quelqu'un a une idée ? Merci .