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

Struts 1 Java Discussion :

une exception java.lang.NullPointerException


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 125
    Par défaut une exception java.lang.NullPointerException
    bonjour,

    Je suis débutante en développemnt j2ee,
    j'ai un problème et je souhaite trouver une réponse chez vous .

    jai un ensemble de pages web et lorsque je lance une requete pour demander ma page l'exception suivante se lève:
    java.lang.NullPointerException

    la classe Dao 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
     
     
     
    public  class HibernateCommDataDao extends HibernateDaoSupport implements CommDataDao{
     
    	final Log log = LogFactory.getLog( HibernateCommDataDao.class);
     
    	public void saveCommData(CommData commData) {
    		// Recuperation implicite d'HibernateTemplate
    		getHibernateTemplate().saveOrUpdate(commData);		
    	}
     
     
     
    	public List<CommData> getAllCommData() {
     
     
    		try{
    			System.out.println("je vais vous construire votre liste listCommData");
     
    			List listCommData=getHibernateTemplate().find("select id from CommData ");
     
    			return listCommData;
    		}catch (RuntimeException re) {
    	         log.error("Echec d'afficher les commissions ", re);
    	         throw re;
    		}	
    }
     
    }
    ma jsp s'appelle consultCommNorm.jsp et sa classe action 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
     
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    import antlr.collections.List;
     
    import com.tunisiana.storcash.dao.HibernateCommDataDao;
     
    import com.tunisiana.storcash.formes.ConsultCommNormForm;
     
    public class ConsultCommNormAction extends Action {
     
    	private ConsultCommNormForm form;
    	ConsultCommNormForm consultCommNormCorporate= form ;
     
    	HibernateCommDataDao hibernateCommDataDao =new HibernateCommDataDao();
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form, 
        		HttpServletRequest request, HttpServletResponse response)
    	{
    		System.out.println("construction de la liste des commissions normaux");
     
    		List commNormList=(List) hibernateCommDataDao.getAllCommData();
    		request.getSession().setAttribute("commNormList", commNormList);
    		return (mapping.findForward("succes"));
     
    }
     
    }

    Sachant que j'utilise Hibernate , spring et struts1, linjection de mon bean dans le fichier context-Application.xml se fait de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <bean id="hibernateTemplate"
    		class="org.springframework.orm.hibernate3.HibernateTemplate">
    		<property name="sessionFactory" ref="sessionFactory" />
    	</bean>
     
            <bean id="hibernateCommDataDao"
    		class="com.storcash.dao.HibernateCommDataDao">
    		<property name="hibernateTemplate" ref="hibernateTemplate" />
    	</bean>

    s'il vous palit aidez moi .

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu as quelque chose dans la console, un stack trace par exemple ?
    Si oui, peux-tu montrer les messages ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 125
    Par défaut
    J'ai compris ma faute , jaurais du passer une la couche service , ce que jai oublié de le faire et non pas directement la couche DAO.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 125
    Par défaut
    Malheuresement le problème persiste encore.

    L'injection du bean dans le fichier ApplicationContext , je l'ai fait comme suit:

    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
    <bean id="consultCommNormService"
    		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    		<property name="proxyTargetClass" value="true" />
    		<property name="transactionManager" ref="hibernateTransactionManager" />
    		<property name="target">
    		    <bean
    				class="com.storcash.services.ConsultCommNormService">
    				<property name="hibernateCommDataDao">
    					<ref bean="hibernateCommDataDao" />
    				</property>
    			</bean>
    		</property>
     
    		<property name="transactionAttributes">
    			<props>
    				<prop key="*">PROPAGATION_REQUIRED</prop>
    			</props>
    		</property>
    	</bean>

    ma classe de la couche service 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
    public class ConsultCommNormService implements IconsultCommNormService {
     
    	private CommDataDao commDataDao;
    	public List<CommData> getAllCommData() {
    		List<CommData>	commDataList=commDataDao.getAllCommData();
    		return commDataList;
    	}
     
     
    	public CommData getCommDataByCode(String code) {
    	CommData commData=commDataDao.getCommDataByCode(code);
    		return commData;
    	}
     
     
     
    	public void saveCommData(CommData comData) {
    		commDataDao.saveCommData(comData);
     
     
    	}
     
     
     
    	public CommData getCommDataById(int id) {
    		CommData commData=commDataDao.getCommDataById(id);
    		return commData;
    	}
     
     
    	public CommDataDao getCommDataDao() {
    		return commDataDao;
    	}
     
     
    	public void setCommDataDao(CommDataDao commDataDao) {
    		this.commDataDao = commDataDao;
    	}
     
     
     
    }

    ma classe DAO:

    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
    public  class HibernateCommDataDao extends HibernateDaoSupport implements CommDataDao{
     
    	final Log log = LogFactory.getLog( HibernateCommDataDao.class);
     
    	public void saveCommData(CommData commData) {
    		// Recuperation implicite d'HibernateTemplate
    		getHibernateTemplate().saveOrUpdate(commData);		
    	}
     
    	public CommData findCommdata(long id) {
    		return (CommData)getHibernateTemplate().load(CommData.class,new Long(id));
     
    	}
     
    	public List<CommData> getAllCommData() {
     
    		System.out.println("je suis avant le bloc try catch");
    		try{
    			System.out.println("je vais vous construire votre liste listCommData");
     
    			List listCommData=getHibernateTemplate().find("select id from CommData ");
     
    			return listCommData;
    		}catch (RuntimeException re) {
    			log.error("Exception lors de la création de la liste", re);
    			throw re;
     
     
    		}	
    }
    la classe Action:
    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
     
    public class ConsultCommNormAction extends Action {
     
     
     
     
    	private CommDataDao commDataDao;
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form, 
        		HttpServletRequest request, HttpServletResponse response)
    	{
     
     
    		System.out.println("construction de la liste des commissions normaux");
     
    		List commNormList=(List) commDataDao.getAllCommData();
    		request.getSession().setAttribute("commNormList", commNormList);
    		return (mapping.findForward("succes"));
     
    }
     
    	public CommDataDao getCommDataDao() {
    		return commDataDao;
    	}
     
    	public void setCommDataDao(CommDataDao commDataDao) {
    		this.commDataDao = commDataDao;
    	}
     
     
     
    }

    La trace sur la console est la suivante:
    08:44:09,912 DEBUG ConnectionManager:369 - running Session.finalize()
    08:44:09,912 DEBUG ConnectionManager:369 - running Session.finalize()
    08:44:10,568 DEBUG ConnectionManager:369 - running Session.finalize()
    construction de la liste des commissions normaux
    08:44:12,550 WARN RequestProcessor:516 - Unhandled Exception thrown: class java.lang.NullPointerException
    22 juil. 2010 08:44:12 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet action a généré une exception
    java.lang.NullPointerException
    at com.tunisiana.storcash.actions.ConsultCommNormAction.execute(ConsultCommNormAction.java:34)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    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:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)


    d'après la trace de la console j'ai constaté que l'exception est levée lors de l'exécution de la l'instruction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List commNormList=(List) commDataDao.getAllCommData();
    Je ne sais pas comment régler ce problème, si vous avez un réponse s'il vous plait aidez moi et merci d'avance

  5. #5
    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 : 46
    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
    commDataDao est null. Je ne vois pas dans ton code ou dans tes fichiers de config où tu attribue une valeur à cette propriété, ce qui explique qu'elle est null.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 125
    Par défaut
    Merci pour votre réponse

    J'ai changé le fichier ApplicationContext de lafaçon 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
    <bean id="consultCommNormService"
    		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    		<property name="proxyTargetClass" value="true" />
    		<property name="transactionManager" ref="hibernateTransactionManager" />
    		<property name="target">
    		    <bean
    				class="com.storcash.services.ConsultCommNormService">
    				<property name="commDataDao">
    					<ref bean="hibernateCommDataDao" />
    				</property>
    			</bean>
    		</property>
    
    		<property name="transactionAttributes">
    			<props>
    				<prop key="*">PROPAGATION_REQUIRED</prop>
    			</props>
    		</property>
    	</bean>
    mais le problème est le même

  7. #7
    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 : 46
    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
    cette config concerne ConsultCommNormService pas ConsultCommNormAction où se trouve la valeur non initialisée

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 125
    Par défaut
    Voici la déclaration de CommNormAction dans le fichier struts-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <action path="/consultCommNormCorporate"
    			type="com.storcash.actions.ConsultCommNormAction"
    			name="consultCommNormForm"  scope="request"
    			input="/consultCommNormCorporate.jsp" validate="false">
    			<forward name="success" path="/consultCommNormCorporate.jsp" />
     
    		</action>
    où dois je initialiser la valeur de commDataDao ici?
    Merci de m'aider encore

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2009
    Messages : 125
    Par défaut
    J'ai pu enfin résoudre l'exception de Null.pointer , j'avais en fait une mauvaise configuration dans le fichier ApplicationContext.xml

    je poste la solution parce que peut être elle peut aider d'autres personnes.

    dans le fichier ApplicationContext.xml je dois déclarer mes beans de la façon 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
    <bean id="hibernateTemplate"
    		class="org.springframework.orm.hibernate3.HibernateTemplate">
    		<property name="sessionFactory" ref="sessionFactory" />
    	</bean>
     
    	<!--  Déclaration des DAO Hibernate-->
     
    	<bean id="commDataDao"
    		class="com.storcash.dao.HibernateCommDataDao">
    		<property name="sessionFactory">
    			<ref bean="sessionFactory" />
    		</property>
    	</bean>
    <bean id="hibernateTransactionManager"
    		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory" ref="sessionFactory" />
    	</bean>
     
    <bean id="hibernateTransactionManager"
    		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory" ref="sessionFactory" />
    	</bean>
    <bean id="consultCommNormService"
    		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    		<property name="proxyTargetClass" value="true" />
    		<property name="transactionManager"
    			ref="hibernateTransactionManager" />
    		<property name="target">
    			<bean
    				class="com.storcash.services.ConsultCommNormService">
    				<property name="commDataDao">
    					<ref bean="commDataDao" />
    				</property>
    			</bean>
    		</property>
     
    		<property name="transactionAttributes">
    			<props>
    				<prop key="*">PROPAGATION_REQUIRED</prop>
    			</props>
    		</property>
    	</bean>
     
    	<bean name="/consultCommNormCorporate"
    		class="com.storcash.actions.ConsultCommNormAction">
    		<property name="consultCommNormService">
    			<ref bean="consultCommNormService" />
    		</property>
    	</bean>

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

Discussions similaires

  1. Bloqué sur une erreur java.lang.NullPointerException
    Par youness78 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 03/11/2009, 15h49
  2. [Exception] java .lang.NullPointerException
    Par Deallyra dans le forum Général Java
    Réponses: 8
    Dernier message: 22/05/2008, 16h25
  3. J'ai une erreur: "java.lang.NullPointerException"
    Par erkan37 dans le forum Général Java
    Réponses: 12
    Dernier message: 14/04/2008, 14h15
  4. Exception : java.lang.NullPointerException
    Par parano dans le forum Langage
    Réponses: 4
    Dernier message: 05/07/2007, 20h27
  5. Erreur exception java.lang.NullPointerException
    Par geol99 dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2007, 20h24

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