Probléme JSP [Fermé]

Signaler
Messages postés
6
Date d'inscription
jeudi 15 août 2013
Statut
Membre
Dernière intervention
16 août 2013
-
Messages postés
16054
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 octobre 2020
-
Bonsoir,
si vous permettez de m'aider a corriger cette erreur que j'arrive pas à savoir d'où elle vient !!!!
-----------------------------------------------------
Etat HTTP 500 - An exception occurred processing JSP page /entete.jsp at line 41

--------------------------------------------------------------------------------

type Rapport d''exception

message An exception occurred processing JSP page /entete.jsp at line 41

description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /entete.jsp at line 41

38: <table width="505" border="0" align="center">
39: <tr>
40: <td width="388">Utilisateur connecté:<%ArrayList<modele.Login> listes=(ArrayList<modele.Login>) session.getAttribute("listes");
41: for (Login l:listes)
42: {
43: if(l.getNomprenom()=="")
44: {


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)


cause mère

java.lang.NullPointerException
org.apache.jsp.accueil_jsp._jspService(accueil_jsp.java:110)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)


note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/7.0.40.

4 réponses

Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
843
Bonjour,

Comme l'indique l'erreur NullPointerException... ta liste est null, et provoque une exception NPE lorsque tu tente de l'utilisé à la ligne 41 dans ta JSP.

Où renseignes-tu cette liste dans la session ? Es-tu certains qu'elle y soit quand on arrive sur la page où tu te trouve ?
10
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
6
Date d'inscription
jeudi 15 août 2013
Statut
Membre
Dernière intervention
16 août 2013

voici ma page entete.jsp je vois pas une raison pour cette erreur ( la listes vient de mon package modele qui contient une classe Login contenant le nom,et l'utilisateur et le niveau et des getter & setter ):
-------------------------------entete.jsp-------------------------------------
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.*,modele.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>PROJET JEE GESTION COMPTE BANCAIRE</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />

<script type="text/javascript">
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
</script>
</head>

<body onload="MM_preloadImages('images/m_01.png','images/m_02.png','images/m_03.png','images/m_04.png','images/accuei1.png')">

<table width="505" border="0" align="center">
<tr>
<td width="388">Utilisateur connecté:<%ArrayList<modele.Login> listes=(ArrayList<modele.Login>) session.getAttribute("listes");
for (Login l:listes)
{
if(l.getNomprenom()=="")
{
response.sendRedirect("index.jsp");
}%>

<%=l.getNomprenom() %>
<%} %></td>
<td width="107"><a href="TraiteLogin?lien=logoff">Deconnexion</a></td>
</tr>
</table>
<div id="bannier">
<div id="menucon">
<a href="TraiteClient?lien=lister" title="Liste des clients de la banque" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image1','','images/m_01.png',1)"><img src="images/MM (1).png" name="Image1" width="72" height="50" border="0" id="Image1" /></a>
<a href="TraiteAgence?lien=lister" title="Liste des agences de la banque" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image2','','images/m_02.png',1)"><img src="images/MM (2).png" name="Image2" width="71" height="50" border="0" id="Image2" /></a>
<a href="TraiteCompte?lien=lister" title="Liste des comptes de la banque" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image3','','images/m_03.png',1)"><img src="images/MM (3).png" name="Image3" width="81" height="50" border="0" id="Image3" /></a>
<a href="TraiteCompte?lien=rech" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image4','','images/m_04.png',1)"><img src="images/MM (4).png" name="Image4" width="104" height="50" border="0" id="Image4" /></a>
<a href="accueil.jsp" title="Retour à la page d'accueil)" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('Image5','','images/accuei1.png',1)"><img src="images/accueil.png" name="Image5" width="41" height="40" border="0" id="Image5" /></a>
</div>
--------------------------------------------------------------------
Messages postés
16054
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 octobre 2020
2 696
ligne 41 :
for (Login l:listes)
Il faudrait que tu regardes, mais tu as surement listes==null.

Remarque, juste en dessous tu as :
if(l.getNomprenom()=="") 
Ça pique les yeux !!

Il faut absolument être hyper rigoureux avec les null, parcer que tu peux en avoir partout (surtout si tes données proviennent d'une base de données, où tous les champs facultatifs reviennent avec la valeur null)

<td width="388">Utilisateurs connectés : 
<%
    if (session!=null)
    {
        List<modele.Login> liste = (ArrayList<modele.Login>) session.getAttribute("listes");

        if (liste!=null)
        {
            for (Login login : liste)
            {
                if (login==null)
                    continue;
                
                String nom = login.getNomprenom();
   
                if (nom != null && !nom.trim().isEmpty())
                    out.print(nom+", ");
            }
        }
    }
%>
</td>
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
843
Puisque tu obtiens une NPE sur l'utilisation de ta liste, et comme tu récupère la dite liste depuis la session via l'instruction suivante:
session.getAttribute("listes");


Ce qu'il faut regarder, c'est le code où tu set l'attribut de session "listes".
Tu dois avoir une servlet, une classe d'action ou un équivalent où tu fais quelque chose comme:
session.setAttribute("listes", ... (la liste en question) ... );


Montres nous cette partie du code s'il te plait car le problème se situe là. Soit tu ne le fais jamais, soit tu le fais mal.
Messages postés
6
Date d'inscription
jeudi 15 août 2013
Statut
Membre
Dernière intervention
16 août 2013

voici l'autre partie du code ma classe TraiteLogin:
--------------TraiteLogin.java---------------------
package controleur;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.omg.CORBA.Request;

import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;

import modele.Client;
import modele.Compte;
import modele.Donnees_Agence;
import modele.Donnees_Client;
import modele.Donnees_Compte;
import modele.Donnees_Login;
import modele.Login;


/**
* Servlet implementation class TraiteLogin
*/
public class TraiteLogin extends HttpServlet {
private static final long serialVersionUID = 1L;
private RequestDispatcher disp=null;
private ArrayList<Login> liste=null;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session =request.getSession();

String lien=request.getParameter("lien");

if(lien.equals("logoff"))
{
liste.clear();
session.setAttribute("liste", liste);
response.sendRedirect("index.jsp");

}

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

disp=null;
Donnees_Login bd =new Donnees_Login();
HttpSession session =request.getSession();

String formul=request.getParameter("bouton");
if(formul.equals("add"))
{
String user=request.getParameter("user");
String passe=request.getParameter("passe");

Login l= new Login();
l.setUtilisateur(user);
l.setMpasse(passe);

liste=bd.RechercheUser(user, passe);
if(liste.size()!=0)
{
session.setAttribute("listes",liste);
disp=request.getRequestDispatcher("accueil.jsp");
disp.forward(request, response);

}else
{

response.sendRedirect("log_error.jsp");

}
}



}

}
------------------------------------------------
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
843
Est-ce que tu ne peux pas mettre des traces pour savoir ce qu'il se passe sur cette partie du code ? Que retourne la base de donnée, passes-tu dans la condition TRUE de ton IF, etc.

liste=bd.RechercheUser(user, passe); 
if(liste.size()!=0) 
{ 
session.setAttribute("listes",liste); 
disp=request.getRequestDispatcher("accueil.jsp"); 
disp.forward(request, response); 

}else 
{ 



Coder c'est aussi comprendre, analyser et corriger ;) On ne peut pas tout faire à ta place...

Messages postés
16054
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 octobre 2020
2 696
Une idée, même si c'est moche, est de mettre un <% try{ %> tout le contenu de la jsp <% } catch (Exception e) { out.println("<!-- "+e+"-->"); }%>
Ça permet de voir s'afficher le contenu de la page html générée avant l'erreur et donc "deviner" à peu près ce qui a planté...