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 :

Erreur "java.lang.NullPointerException" avec JSF


Sujet :

JSF Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut Erreur "java.lang.NullPointerException" avec JSF
    Bonjour chers membres,
    je suis en developpement Java EE et j'ai une exception de type java.lang.NullPointerException dons voici:
    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
    java.lang.NullPointerException
    	at project.service.ModelServiceImpl.getAllmodel(ModelServiceImpl.java:30)
    	at project.beans.ModelBean.getAllmodel(ModelBean.java:35)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at javax.el.BeanELResolver.getValue(BeanELResolver.java:302)
    	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    	at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
    	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
    	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
    	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
    	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
    	at javax.faces.component.UIData.getValue(UIData.java:731)
    	at org.primefaces.component.datatable.DataTable.getValue(DataTable.java:867)
    	at org.primefaces.component.api.UIData.getDataModel(UIData.java:579)
    	at javax.faces.component.UIData.getRowCount(UIData.java:356)
    	at org.primefaces.component.api.UIData.calculateFirst(UIData.java:157)
    	at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:176)
    	at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:82)
    	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764)
    	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
    	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
    	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59)
    	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47)
    	at org.primefaces.extensions.component.layout.LayoutPaneRenderer.encodeBegin(LayoutPaneRenderer.java:148)
    	at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820)
    	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:56)
    	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47)
    	at org.primefaces.extensions.component.layout.LayoutPaneRenderer.encodeBegin(LayoutPaneRenderer.java:152)
    	at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1755)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
    	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
    	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
    	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
    	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
    	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
    	at java.lang.Thread.run(Unknown Source)
    je constate que la methode getAllmodel() due l'implementation du DAO n'est pas executée.
    voici la methode:
    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
    package project.metier.dao;
     
    import java.util.List;
     
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.springframework.stereotype.Repository;
     
    import project.metier.mouse.Model;
    import project.metier.mouse.Vehicule;
    import project.util.HibernateUtil;
     
    @Repository("iModelHome")
    public class ModelImpl implements IModelHome{
     
    	@Override
    	public void addModel(Model mod) {
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		session.save(mod);
    		session.getTransaction().commit();
     
    	}
     
    	/*public List<Model> getAllmodel() {
    		Session session=HibernateUtil.getSessionFactory().openSession();
    		//Transaction transaction = session.beginTransaction();
     
    		try{
            session.getTransaction().begin();
    		Query req=session.createQuery("select r from Model r");
     
    		return (req.list());
     
     
    		} catch (RuntimeException e) {
    		    session.getTransaction().rollback();
    		    throw e;
    		}
     
    	}*/
     
     
     
    	@Override
    	public Model getById(int idc) {
    		Session
    		session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		Model tt=(Model) session.get(Model.class, idc);
    		return tt;
    	}
     
    	@Override
    	public List<Model> getByMarque(String mc) {
    		Session
    		session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		Query req=session.createQuery("select con from Model con where con.marque like :x");
    		req.setParameter("x","%"+mc+"%");
    		return req.list();
    	}
     
    	@Override
    	public Model getByType(Model m) {
    		Session
    		session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		Model mod=(Model) session.get(Model.class, m);
    		return mod;
    	}
     
    	@Override
    	public void editBon(Model model, int idModel) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public List<Model> getAllmodel() {
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		Query req=session.createQuery("select m from Model m");
    		return req.list();
    	}
     
    }
    le bean 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
    package project.beans;
     
    import java.util.List;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
     
     
    import project.metier.mouse.Model;
    import project.service.ModelService;
     
    @Component
    @Scope
    public class ModelBean {
     
     
    	private Model model;
    	private ModelService modelService;
     
    	public ModelBean() {
    		// TODO Auto-generated constructor stub
    		model= new Model();
    	}
     
    	public Model getModel() {
    		return model;
    	}
     
    	public void setModel(Model model) {
    		this.model = model;
    	}
     
    public  List<Model> getAllmodel(){
    		return modelService.getAllmodel();
     
    	}
    public void addModel(){
    	modelService.addModel(model);
    }
     
    	@Autowired
    	public void setModelService(ModelService modelService) {
    		this.modelService = modelService;
    	}
     
     
     
    }
    le service:
    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
    package project.service;
     
    import java.util.List;
     
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
     
    import project.metier.dao.IModelHome;
    import project.metier.mouse.Model;
     
    @Service
    @Transactional
    public class ModelServiceImpl implements ModelService {
     
    	private IModelHome iModelHome;
     
    	public void setiModelHome(IModelHome iModelHome) {
    		this.iModelHome = iModelHome;
    	}
     
    	@Override
    	public void addModel(Model mod) {
    		iModelHome.addModel(mod);
     
    	}
     
    	@Override
    public  List<Model> getAllmodel(){
    		// TODO Auto-generated method stub
    		return iModelHome.getAllmodel();
    	}
     
    	@Override
    	public Model getById(int idc) {
    		// TODO Auto-generated method stub
    		return iModelHome.getById(idc);
    	}
     
    	@Override
    	public List<Model> getByMarque(String mc) {
    		// TODO Auto-generated method stub
    		return iModelHome.getByMarque(mc);
    	}
     
    	@Override
    	public Model getByType(Model m) {
    		// TODO Auto-generated method stub
    		return iModelHome.getByType(m);
    	}
     
    	public void editBon(Model model,int idModel){
    		iModelHome.editBon(model,idModel);
     
    	}
    }
    enfin la page jsf
    <!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:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/Views/Template/common.xhtml">
    <ui:define name="Edition">

    </ui:define>

    <ui:define name="Consultation">

    <p:dialog header="Ajout d'un model" widgetVar="modelAjout" resizable="true" id="editM" >
    <p:growl id="growl" showDetail="true" sticky="false" />

    <h:panelGrid id="display" columns="2" cellpadding="4" style="margin:0 auto;">


    <f:facet name="header">
    <h:outputLabel value="bonjour"/>
    </f:facet>



    <h:outputLabel for="id" title="id" value="id:" style="color: crimson;" />
    <h:inputText value="#{modelBean.model.idModel}" id="id" required="true" visible="false"/>
    <h:outputLabel for="marque" value="Marque:" style="color: crimson;"/>
    <h:inputText value="#{modelBean.model.marque}" id="marque" required="true"/>
    <h:outputLabel for="type" title="type" value="Type:" style="color: crimson;"/>

    <h:inputText value="#{modelBean.model.type}" id="type" required="true"/>

    </h:panelGrid>
    <p:separator/>
    <p:commandButton value="Enregistrer" action="#{modelBean.addModel}" />
    </p:dialog>

    <h:form id="tbb">


    <p:outputPanel>
    <h:outputText value="Search:" style="Height:30px"/>
    <p:inputText id="globalFilter" onkeyup="TypeCarburant.filter()" style="width:150px" />
    </p:outputPanel>
    <h:form id="AjoutM">
    <p:commandButton value="Ajouter un model Vehicule" icon="ui-icon-adds" onclick="modelAjout.show()"/>
    </h:form>
    <p:dataTable id="dataTable" var="model" value="#{modelBean.allmodel}" sortMode="single" rows="5" paginator="true" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,15,25">

    <p:column sortBy="#{model.idModel}" headerText="ID" >
    <h:outputText value="#{model.idModel}" />
    </p:column>

    <p:column sortBy="#{model.marque}" headerText="Marque">
    <h:outputText value="#{model.marque}" />
    </p:column>

    <p:column sortBy="#{model.type}" headerText="Model:">
    <h:outputText value="#{model.type}" />
    </p:column>

    </p:dataTable>

    </h:form>

    </ui:define>
    </ui:composition>
    </html>
    j'ai deux interfaces,interface DOA et interface service Service que voici
    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
     
    package project.service;
     
    import java.util.List;
     
    import project.metier.mouse.Model;
     
    public interface ModelService {
    	public void addModel(Model mod);	
    	public  List<Model> getAllmodel();
    	public Model getById(int idc);
    	public List<Model> getByMarque(String mc);
    	public Model getByType(Model m);
    }
    //et l'interface du DAo ModelHome
    package project.metier.dao;
     
    import java.util.List;
     
    import project.metier.mouse.Model;
     
     
     
    public interface IModelHome {
    	public void addModel(Model mod);	
    	public  List<Model> getAllmodel();
    	public Model getById(int idc);
    	public List<Model> getByMarque(String mc);
    	public Model getByType(Model m);
    	public void editBon(Model model, int idModel);
     
     
    }
    je ne comprends pas ou est que j'ai mal instancié un objet,est ce que quequ'un remarque quelque chose dans ce code?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Dommage que l'exception soit dans ModelServiceImpl.java et que ce soit justement cette classe que tu ne nous as pas fournie

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 93
    Par défaut
    Bonjour.

    Peux tu joindre également ta config spring ?

    Sinon j'ai l'impression qu'il te manque l'annotation
    @Autowired sur ta variable private IModelHome iModelHome; de ta couche service

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut
    Citation Envoyé par cryo94 Voir le message
    Bonjour.

    Peux tu joindre également ta config spring ?

    Sinon j'ai l'impression qu'il te manque l'annotation
    @Autowired sur ta variable private IModelHome iModelHome; de ta couche service
    Grand merci vous avez vu juste,j'ai ajouté @autowired sur private IModelHome iModelHome et ça marche.Mais pouvez vous m'expliquez pourquoi?Parce que toute les autres classe marchent sans le @autowired sur la variable equivalente,
    seulement @Service et @Transactionnel sur les Class.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Dommage que l'exception soit dans ModelServiceImpl.java et que ce soit justement cette classe que tu ne nous as pas fournie
    le ModelServiceImpl.java est bien là juste avant le code de la page jsf,tu n'as pas du voir,mais le probleme etait bien dans cette classe comme tu l'a dit.Merci

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par opium1er Voir le message
    pouvez vous m'expliquez pourquoi?Parce que toute les autres classe marchent sans le @autowired sur la variable equivalente
    Les autres classe on probablement une configuration dans le spring.xml définissant spécifiquement les injections. Tu as toujours le choix entre préciser les injections par annotation ou utiliser les fichiers xml.

    Citation Envoyé par opium1er Voir le message
    le ModelServiceImpl.java est bien là juste avant le code de la page jsf,tu n'as pas du voir
    Effectivement

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 93
    Par défaut
    Citation Envoyé par opium1er Voir le message
    Grand merci vous avez vu juste,j'ai ajouté @autowired sur private IModelHome iModelHome et ça marche.Mais pouvez vous m'expliquez pourquoi?Parce que toute les autres classe marchent sans le @autowired sur la variable equivalente,
    seulement @Service et @Transactionnel sur les Class.
    Et non regarde bien ta classe bean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	@Autowired
    	public void setModelService(ModelService modelService) {
    		this.modelService = modelService;
    	}
    Tu fais bien une injection par annotation

    Tu peux aussi optimiser la lecture en retirant les getters / setters sur tes variables annotées par @Autowired (Attention uniquement si elles ne te servent qu'à faire de l'injection de dépendance !)
    Spring va directement injecter les valeurs en passant par un mécanisme d'introspection.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 31/05/2011, 10h40
  2. erreur compilation java.lang.NullPointerException
    Par muslim1987 dans le forum JDBC
    Réponses: 6
    Dernier message: 26/06/2008, 09h16
  3. Erreur exception java.lang.NullPointerException
    Par geol99 dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2007, 20h24
  4. erreur de java.lang.NullPointerException
    Par vince351 dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2007, 12h29

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