Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JSP] Afficher le contenu d'une ArrayList dans page jsp

Sujet résolu
    27 avril 2010 à 12:29:35

    Bonjour,

    Je n'arrive pas a afficher le contenu de mon ArrayList dans ma page jsp, je m'y prend peut etre mal...
    Voici ma servlet :
    public void doGet(HttpServletRequest request, 
    	HttpServletResponse response)
    	throws IOException, ServletException{
    	
    	WebApplicationContext factory = WebApplicationContextUtils.getRequiredWebApplicationContext(
    			this.getServletContext());
    	
    	ProfesseurDAO profDao = (ProfesseurDAO) factory.getBean("ProfesseurDAO");
    	//Professeur prof = profDao.getProfesseurById(2);
    	
    	ArrayList listProf = profDao.getAllProfesseur();
    	
    	
    	request.setAttribute("listProf", listProf);
    	
    	RequestDispatcher dispatch = request.getRequestDispatcher("jsp/listProf.jsp");
    	dispatch.forward(request, response);
    	
    }
    

    ma page jsp :
    <table border="1px" cellpadding="0" cellspacing="0">
    <caption>Les profs :</caption>
    <% 
    	ArrayList<Professeur> listProf = new ArrayList();
    	listProf = (ArrayList<Professeur>) request.getAttribute("listProf");
    
    
    	for(Iterator<Professeur> it = listProf.iterator(); it.hasNext();){
    		Professeur prof = it.next();
    		out.println("<tr><td>Id</td><td>"+prof.getProf_id()+"</td>"
    				+"<td>Nom</td><td>"+prof.getProf_nom()+"</td>"
    				+"<td>Prenom</td><td>"+prof.getProf_prenom()+"</td>");
    	}
    
    	
    %>
    </table>
    

    Et voila mon erreur :

    27-Apr-2010 11:15:15 org.apache.catalina.core.ApplicationDispatcher invoke
    SEVERE: Servlet.service() for servlet jsp threw exception
    java.lang.NullPointerException
    at org.apache.jsp.jsp.listProf_jsp._jspService(listProf_jsp.java:71)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    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.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at domain.ListProf.doGet(ListProf.java:48)
    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.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)
    27-Apr-2010 11:15:15 org.apache.catalina.core.StandardWrapperValve invoke
    SEVERE: Servlet.service() for servlet listProf threw exception
    java.lang.NullPointerException
    at org.apache.jsp.jsp.listProf_jsp._jspService(listProf_jsp.java:71)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    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.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at domain.ListProf.doGet(ListProf.java:48)
    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.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)


    La page d'erreur Tomcat indique un probleme a la declaration de la boucle for.

    Merci d'avance pour le temps que vous consacrerez a mon probleme !

    Romain.

    [EDIT]
    Il semblerai que mon array soit vide.
    Pour le remplir j'utilise le code suivant :
    public java.util.ArrayList<Professeur> getAllProfesseur() {
    	// TODO Auto-generated method stub
    	final ArrayList<Professeur> allProf = new ArrayList();
    	final String HQL_QUERY = "from Professeur professeur";
       	HibernateCallback callback = new HibernateCallback() {
               public Object doInHibernate(Session session) 
                   throws HibernateException,SQLException {
               	Query query = session.createQuery(HQL_QUERY);
               	for(Iterator it=query.iterate();it.hasNext();){
               		Professeur prof = (Professeur) it.next();
               		allProf.add(prof);
               		
               	}
               	return allProf;
               	//return session.save(prof);
               }
           };          
           hibernateTemplate.execute(callback);
          // return 1;
    	return null;
    }
    

    Et lorsque je debug la variable allProf est toujours vide alors que prof prend bien une valeur de prof dans la BDD a chaque iteration...

    Un avis?
    • Partager sur Facebook
    • Partager sur Twitter
      27 avril 2010 à 12:58:30

      Salut!
      Tu utilises le mot clé "final" devant la déclaration de allProf.

      Final empêche de modifier la valeur de cette variable, donc normal que ta liste soit toujours vide :)

      Amicalement,
      • Partager sur Facebook
      • Partager sur Twitter
        27 avril 2010 à 13:08:22

        Le probleme c'est que je suis oblige de mettre final diInHibernate ... Un idee?

        Problem solved !
        public java.util.ArrayList<Professeur> getAllProfesseur() {
        		// TODO Auto-generated method stub
        		
        		final String HQL_QUERY = "from Professeur professeur";
        		
        		HibernateCallback callback = new HibernateCallback() {
                    public Object doInHibernate(Session session) 
                        throws HibernateException,SQLException {
                    	ArrayList<Professeur> allProf = new ArrayList<Professeur>();
                    	Query query = session.createQuery(HQL_QUERY);
                    	Iterator it=query.iterate();
                    	while(it.hasNext()){
                    		Professeur prof = (Professeur) it.next();
                    		allProf.add(prof);
                    		
                    	}
                    	return allProf;
                    }
                };
                
        		return (ArrayList<Professeur>) hibernateTemplate.execute(callback);
        	}
        
        • Partager sur Facebook
        • Partager sur Twitter
          27 février 2013 à 20:04:35

          je voulu cree un tableua pour affficher la liste mais il ya des erreur dans arrayList ainsi que la liste operation

          merci d'avance de votre aide

          <%ArrayList <Operation> liste=(ArrayList <Operation>) request.getAttribute("listeop");%>

          -
          Edité par Hachimjiro 27 février 2013 à 20:17:55

          • Partager sur Facebook
          • Partager sur Twitter
            12 mars 2013 à 10:16:00

            Merci de créer un sujet à part pour ton problème, et de l'expliquer correctement.

            • Partager sur Facebook
            • Partager sur Twitter

            [JSP] Afficher le contenu d'une ArrayList dans page jsp

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown