Probléme JSP
mir_hano
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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.
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
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 ?
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 ?
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>
--------------------------------------------------------------------
-------------------------------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>
--------------------------------------------------------------------
ligne 41 :
Remarque, juste en dessous tu as :
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)
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>
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:
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:
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.
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.
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");
}
}
}
}
------------------------------------------------
--------------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");
}
}
}
}
------------------------------------------------
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.
Coder c'est aussi comprendre, analyser et corriger ;) On ne peut pas tout faire à ta place...
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...