Bonjour,
j'ai un petit problème concernant dataTable..
Lorsque je clique sur le bouton supprimer dans un ligne du DataTable l'exception suivante s'affiche :
voici le source de mon code :
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 javax.servlet.ServletException: #{user.doDelete}: java.lang.NullPointerException javax.faces.webapp.FacesServlet.service(FacesServlet.java:277) org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) cause mère javax.faces.FacesException: #{user.doDelete}: java.lang.NullPointerException com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118) javax.faces.component.UICommand.broadcast(UICommand.java:387) org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55) org.ajax4jsf.component.UIDataAdaptor.broadcast(UIDataAdaptor.java:1364) org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:318) org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:293) org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:250) org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:463) com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) cause mère javax.faces.el.EvaluationException: java.lang.NullPointerException javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) javax.faces.component.UICommand.broadcast(UICommand.java:387) org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55) org.ajax4jsf.component.UIDataAdaptor.broadcast(UIDataAdaptor.java:1364) org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:318) org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:293) org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:250) org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:463) com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) cause mère java.lang.NullPointerException javax.gyles.models.UserModel.doDelete(UserModel.java:53) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) java.lang.reflect.Method.invoke(Unknown Source) org.apache.el.parser.AstValue.invoke(AstValue.java:172) org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68) javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) javax.faces.component.UICommand.broadcast(UICommand.java:387) org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55) org.ajax4jsf.component.UIDataAdaptor.broadcast(UIDataAdaptor.java:1364) org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:318) org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:293) org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:250) org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:463) com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/6.0.20.
UserModel.java
ListUser.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 /** * @author Gyles **/ package javax.gyles.models; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; import javax.gyles.models.ext.ListUser; import javax.faces.context.FacesContext; import javax.faces.application.FacesMessage; public class UserModel extends Object { private String nom; private String prenom; private ListUser users; private DataModel dataModel; public UserModel() { if (users == null) users = new ListUser(); if (dataModel == null) { dataModel = new ListDataModel(); dataModel.setWrappedData(users.getList()); } } public UserModel(String nom, String prenom) { this.nom = nom; this.prenom = prenom; } public String doAdd() { if (users.isAlreadyRegistered(new UserModel(nom, prenom))) { FacesContext.getCurrentInstance().addMessage("ERROR", new FacesMessage("Cet utilisateur est déjà enregistré.")); return null; }else { users.add(new UserModel(nom, prenom)); return null; } } public String doDelete() { users.remove((UserModel)dataModel.getRowData()); return null; } public String doReset() { nom = ""; prenom = ""; return null; } public String doShow() { return "SUCCESS"; } public void setNom(String nom) { this.nom = nom; } public void setPrenom(String prenom) { this.prenom = prenom; } public void setDataModel(DataModel dataModel) { this.dataModel = dataModel; } public void setUsers(ListUser users) { this.users = users; } public String getNom() { return nom; } public String getPrenom() { return prenom; } public DataModel getDataModel() { return dataModel; } public ListUser getUsers() { return users; } }
addForm.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
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 /** * @author Gyles **/ package javax.gyles.models.ext; import java.util.List; import java.util.ArrayList; import javax.gyles.models.UserModel; public class ListUser extends Object { private List<UserModel> list; public ListUser() { if (list == null) list = new ArrayList<UserModel>(); } public void add(UserModel user) { list.add(user); } public void remove(UserModel user) { list.remove(user); } public void clear() { list.clear(); } public boolean isAlreadyRegistered(UserModel user) { boolean exists = false; for (int i = 0; i < list.size(); i++) { if (list.get(i).getNom().equals(user.getNom()) && list.get(i).getPrenom().equals(user.getPrenom())) { exists = true; break; } } return exists; } public void setList(List<UserModel> list) { this.list = list; } public List<UserModel> getList() { return list; } }
d'avance Merci..
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 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@taglib uri="http://richfaces.org/rich" prefix="rich" %> <%@taglib uri="http://richfaces.org/a4j" prefix="ajax" %> <f:view> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Ajout d'un nouveau utilisateur</title> </head> <body> <br/><center><h:outputText value="NOUVEL UTILISATEUR" style="font-family:verdana; font-weight:bold; font-size:46px;" /><br/><br/></center> <center><h:outputText id="ERROR" value="" /><rich:message for="ERROR" style="font-family:tahoma; font-weight:bold; font-size:11px; color:red;" /><br/><br/></center> <center><rich:panel header="Ajout d'un nouveau utilisateur" style="width:380px; height:150px;"> <ajax:form> <h:panelGrid columns="3" width="380" cellspacing="10"> <h:panelGroup><h:outputText value="Nom :" /></h:panelGroup> <h:panelGroup><h:inputText id="NOM" value="#{user.nom}" size="25" required="true" requiredMessage="* Champ Obligatoire" /></h:panelGroup> <h:panelGroup><rich:message for="NOM" style="color:red;" /></h:panelGroup> <h:panelGroup><h:outputText value="Prénom :" /></h:panelGroup> <h:panelGroup><h:inputText id="PRENOM" value="#{user.prenom}" size="25" required="true" requiredMessage="* Champ Obligatoire" /></h:panelGroup> <h:panelGroup><rich:message for="PRENOM" style="color:red;" /></h:panelGroup> <h:panelGroup><ajax:commandButton value="Enregistrer" action="#{user.doAdd}" reRender="TABLE" /></h:panelGroup> <h:panelGroup><ajax:commandButton value="Rétablir" action="#{user.doReset}" reRender="NOM, PRENOM" /><rich:spacer width="50px" /> <ajax:commandButton value="Show" action="#{user.doShow}" immediate="true" /></h:panelGroup> <h:panelGroup></h:panelGroup> </h:panelGrid><br/><br/><br/><br/><br/> <center><rich:dataTable id="TABLE" value="#{user.dataModel}" var="user" width="300px"> <rich:column><f:facet name="header"><h:outputText value="NOM" /></f:facet><h:outputText value="#{user.nom}" /></rich:column> <rich:column><f:facet name="header"><h:outputText value="PRENOM" /></f:facet><h:outputText value="#{user.prenom}" /></rich:column> <rich:column><f:facet name="header"><h:outputText value="DELETE" /></f:facet><center><ajax:commandButton value="Supprimer" action="#{user.doDelete}" reRender="TABLE" /></center></rich:column> </rich:dataTable></center> </ajax:form> </rich:panel></center> </body> </html> </f:view>
Partager