IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

JSF Java Discussion :

Suppression ligne DataTable


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Par défaut Suppression ligne DataTable
    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 :
    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.
    voici le source de mon code :
    UserModel.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;
    	}
    }
    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
    /**
     * @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;
    	}
    }
    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
    <%@ 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>
    d'avance Merci..

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Peut on voir la déclaration de ton user dans le faces config?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    Peut on voir la déclaration de ton user dans le faces config?
    faces-config.xml
    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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <faces-config
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
        version="1.2">
    	<managed-bean>
    		<managed-bean-name>user</managed-bean-name>
    		<managed-bean-class>javax.gyles.models.UserModel</managed-bean-class>
    		<managed-bean-scope>application</managed-bean-scope>
    	</managed-bean>
     
    <navigation-rule>
    <from-view-id>forms/addForm.jsp</from-view-id>
    <navigation-case>
    <from-outcome>SUCCESS</from-outcome>
    <to-view-id>forms/views/listView.jsp</to-view-id>
    </navigation-case>
    </navigation-rule>
    </faces-config>

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Change un peu le nom de cette variable 'var=user' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rich:dataTable id="TABLE" value="#{user.dataModel}" var="user" width="300px">
    .
    C'est possible que JSF se melange les pinceaux.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    Change un peu le nom de cette variable 'var=user' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <rich:dataTable id="TABLE" value="#{user.dataModel}" var="user" width="300px">
    .
    C'est possible que JSF se melange les pinceaux.
    j'ai changé le nom de var mais le message d'erreur s'affiche toujours.

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 68
    Par défaut
    Ajoute un breakPoint à la méthode doDelete et debug ton programme tu verras d'où vient le nullPointerException

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression ligne datatable
    Par wakan dans le forum VB.NET
    Réponses: 4
    Dernier message: 14/09/2009, 09h59
  2. [BATCH] Suppression Ligne
    Par kilian dans le forum Windows
    Réponses: 2
    Dernier message: 24/05/2006, 14h02
  3. [VBA][EXCEL] pb suppression ligne
    Par megapacman dans le forum Access
    Réponses: 2
    Dernier message: 06/04/2006, 13h34
  4. [JTable] probleme suppression ligne
    Par lilou77 dans le forum Composants
    Réponses: 1
    Dernier message: 01/11/2005, 10h34

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