Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    problema jsp

    Ciao a tutti,
    ho dei problemi con le jsp.
    premetto inoltre che mi sto approcciando adesso alle servlet jsp.

    Ho creato questa pagina jsp:

    <html>
    <%@page import="business.user, java.util.*" %>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>

    <%

    ArrayList<user> utenti=(ArrayList) request.getAttribute("utenti");
    %>
    <table border="1" width="100%" id="table1" height="172">
    <tr>
    <td align="center" height="20">
    <font size="2">Nome</font>
    </td>
    <td align="center" height="20">
    <font size="2">Marca</font>
    </td>
    <td align="center" height="20">
    <font size="2">Prezzo</font>
    </td>
    <td align="center" width="148" height="20">
    <font size="2">µaQuantit</font>
    </td>
    </tr>
    <%

    for (int i=0;i<utenti.size();i++)
    {
    user ut=(user)utenti.get(i);
    %>

    <tr>
    <td>Nome: <%= ut.getNome() %></td>
    <td>Cognome:<%=ut.getCognome()%></td>
    <td>Età:<%=ut.getEta() %></td>

    </tr>

    <% } %>
    </table>


    </body>
    </html>

    ma nel momento in cui mando in esecuzione mi esce questo tipo di errore!

    type Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: Exception in JSP: /listaUtenti.jsp:33

    30: </tr>
    31: <%
    32:
    33: for (int i=0;i<utenti.size();i++)
    34: {
    35: user ut=(user)utenti.get(i);
    36: %>


    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:467)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:389)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:803)


    root cause

    java.lang.NullPointerException
    org.apache.jsp.listaUtenti_jsp._jspService(listaUt enti_jsp.java:77)
    org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:328)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:803)


    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.


    Mi potete spiegare dove sto sbagliando???
    Grazie a tutti

  2. #2
    Codice PHP:
    ArrayList<userutenti=(ArrayListrequest.getAttribute("utenti"); 
    L' ArrayList utenti è null (e quindi non è possibile invocarne il metodo size() )perchè probabilmente nella servlet da cui effettui il forward verso la JSP non hai settato correttamente l'attributo "utenti". Controlla che nella servlet sia presente tale settaggio:

    Codice PHP:
    ArrayList<userutenti = new ArrayList<user>();
    utenti.add(..);
    request.setAttribute("utenti",utenti); 
    In ogno caso NullPointerException capita sicuramente quando inserisci l'url della JSP direttamente nel browser.

    ciao

  3. #3
    Grazie,
    un problema è risolto!

    Quindi per ovviare al problema della NullPointerException devo passare la jsp alla servlet???
    o ho detto una grande cavolata?

    Grazie mille

  4. #4
    L' istruzione request.getAttribute("") è molto differente da request.getParameter(""). La seconda restituisce sempre e solo una stringa (e il parametro può essere settato anche via browser) mentre la prima restituisce un generico Object che può essere settato solo "all'interno" del server, in genere mediante una servlet applicando il pattern MVC. Non è corretto dire

    devo passare la jsp alla servlet
    è invece corretto dire "devo richiamare la jsp dalla servlet" nel seguente modo:

    Codice PHP:
    public class Index extends HttpServlet {
    ...
    protected 
    void doGet(HttpServletRequest requestHttpServletResponse response)
        
    throws ServletExceptionIOException {
    ...
    ArrayList<userutenti = new ArrayList<user>();
    utenti.add(..);
    request.setAttribute("utenti",utenti);
    [
    B]
    RequestDispatcher dispatcher =  this.getServletContext().getRequestDispatcher("/index.jsp"); dispatcher.forward(requestresponse);
    [/
    B
    }

    nel browser dovrai richiamare la servlet Index tramite l'url "http://.../Index" (se nel web.xml hai mappato l'url "/Index" con la servlet "Index", ...come avviene di default) e in maniera 'automatica' verrà visualizzata la pagina "index.jsp". Il tutto perchè viene fatto un redirect interno al server che ti permette di settare l'attributo "utenti" alla richiesta.

    Ciao

  5. #5
    Grazie ancora!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.