Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: class cast exception

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203

    class cast exception

    Ciao ragazzi non riesco a capire perchè mi da questo errore sulla servlet:

    java.lang.ClassCastException: entities.Divx cannot be cast to java.util.Iterator
    at controller.Appl_controller.processRequest(Appl_con troller.java:48)
    at controller.Appl_controller.doGet(Appl_controller.j ava:75)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:734)

    La mia servlet è (metto solamente quello che ho messo io):

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    //divx divx = new divx();
    /* Creo l'oggetto listaFilm per memorizzare i dati provenienti dal db*/
    List<Divx> listaFilm = (List<Divx>) controller.findAllDivx();
    /* Setto i dati memorizzati in listaFilm nel label "servletName" */
    Iterator itr = listaFilm.iterator();
    while(itr.hasNext()) {
    List<Divx> lista = (List<Divx>) itr.next();

    request.setAttribute("servletName", lista);
    }
    /* Ciclo il contenuto della variabile listaFilm*/

    request.getRequestDispatcher("/lista.jsp").forward(request,response);
    /* inoltro la richiesta proveniente dall'index.jsp alla pagina che visualizza la lista*/

    try {

    } finally {
    out.close();
    }
    }

    In qualsiasi modo metto la variabile lista non me la prende ho provato come collection, come List, come ArrayList ma nulla qualcuno sa aiutarmi?
    Vi ringrazio ragazzi siete fantastici

  2. #2
    Io credo che l'itr.next() nel tuo caso debba restituire un oggetto di tipo Divx e non una lista.
    "Na' sedia te vojo tirà!"

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    Grazie mille Brazonet
    Adesso non mi da più l'errore del cast

    però se il ciclo lo faccio così:

    while(itr.hasNext()) {
    Divx lista = (Divx) itr.next();

    request.setAttribute("servletName", lista);
    }
    mi restituisce:

    entities.Divx[iddivx=349]

    se invece lo faccio così:

    while(itr.hasNext()) {
    Divx lista = (Divx) itr.next();

    request.setAttribute("servletName", listaFilm);
    }

    mi restituisce:

    entities.Divx[iddivx=1], entities.Divx[iddivx=2], entities.Divx[iddivx=3], entities.Divx[iddivx=4], entities.Divx[iddivx=5], entities.Divx[iddivx=6], entities.Divx[iddivx=7], entities.Divx[iddivx=8], entities.Divx[iddivx=9], entities.Divx[iddivx=10], entities.Divx[iddivx=11], entities.Divx[iddivx=12], entities.Divx[iddivx=13], entities.Divx[iddivx=14], entities.Divx[iddivx=15], entities.Divx[iddivx=16], entities.Divx[iddivx=17], entities.Divx[iddivx=18], entities.Divx[iddivx=19], entities.Divx[iddivx=20], entities.Divx[iddivx=21], entities.Divx[iddivx=22], entities.Divx[iddivx=23], entities.Divx[iddivx=24], entities.Divx[iddivx=25], entities.Divx[iddivx=26], entities.Divx[iddivx=27], entities.Divx[iddivx=28], entities.Divx[iddivx=29], entities.Divx[iddivx=30], entities.Divx[iddivx=31], entities.Divx[iddivx=32], entities.Divx[iddivx=33], entities.Divx[iddivx=34], entities.Divx[iddivx=35], entities.Divx[iddivx=36], entities.Divx[iddivx=37], entities.Divx[iddivx=38], entities.Divx[iddivx=39], entities.Divx[iddivx=40], entities.Divx[iddivx=41], entities.Divx[iddivx=42], entities.Divx[iddivx=43], entities.Divx[iddivx=44], entities.Divx[iddivx=45], entities.Divx[iddivx=46], entities.Divx[iddivx=47], entities.Divx[iddivx=48], entities.Divx[iddivx=49], entities.Divx[iddivx=50], entities.Divx[iddivx=51], entities.Divx[iddivx=52], entities.Divx[iddivx=53], entities.Divx[iddivx=54], entities.Divx[iddivx=55], entities.Divx[iddivx=56], entities.Divx[iddivx=57], entities.Divx[iddivx=58], entities.Divx[iddivx=59], entities.Divx[iddivx=60], entities.Divx[iddivx=61], entities.Divx[iddivx=62], entities.Divx[iddivx=63], entities.Divx[iddivx=64], entities.Divx[iddivx=65], entities.Divx[iddivx=66], entities.Divx[iddivx=67], entities.Divx[iddivx=68], entities.Divx[iddivx=69], entities.Divx[iddivx=70], entities.Divx[iddivx=71], entities.Divx[iddivx=72], entities.Divx[iddivx=73], entities.Divx[iddivx=74], entities.Divx[iddivx=75], entities.Divx[iddivx=76], entities.Divx[iddivx=77], entities.Divx[iddivx=78], entities.Divx[iddivx=79], entities.Divx[iddivx=80], entities.Divx[iddivx=81], entities.Divx[iddivx=82], entities.Divx[iddivx=83], entities.Divx[iddivx=84], entities.Divx[iddivx=85], entities.Divx[iddivx=86], entities.Divx[iddivx=87], entities.Divx[iddivx=88], entities.Divx[iddivx=89], entities.Divx[iddivx=90], entities.Divx[iddivx=91], entities.Divx[iddivx=92], entities.Divx[iddivx=93], entities.Divx[iddivx=94], entities.Divx[iddivx=95], entities.Divx[iddivx=96], entities.Divx[iddivx=97], entities.Divx[iddivx=98], entities.Divx[iddivx=99], entities.Divx[iddivx=100], entities.Divx[iddivx=101], entities.Divx[iddivx=102], entities.Divx[iddivx=103],

    Come posso fare per farmi restituire i valori all'interno del db

  4. #4
    Dipende da com'è fatto l'oggetto Divx.
    Se al suo interno ci sono i metodi get delle proprietà, se stiamo parlando di Java basterà invocarli, oppure se stiamo parlando di una jsp:

    codice:
     <%=((Divx)request.getAttribute("servletName")).getProprieta() %>
    "Na' sedia te vojo tirà!"

  5. #5
    Ovviamente vale se la proprietà è una String.
    "Na' sedia te vojo tirà!"

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    allora qua ciclo la variabile con l'iteratore

    Iterator itr = listaFilm.iterator();
    while(itr.hasNext()) {
    Divx lista = (Divx) itr.next();
    lista.getTitolo();
    request.setAttribute("servletName", lista);
    }

    In questo modo forwardo la richiesta alla jsp:

    request.getRequestDispatcher("/lista.jsp").forward(request,response);

    In questo modo mi riprendo i dati nella jsp:




    <% out.print((entities.Divx)request.getAttribute("ser vletName")); %>
    </p>

    e mi restituisce:

    entities.Divx[iddivx=349] <--- è l'ultimo elemento della lista

    dove è che sbaglio???

    se volete questo è tutto il codice della servlet:

    package controller;


    //import action2.Divx;
    import java.io.IOException;
    import java.io.PrintWriter;
    //import java.util.Collection;
    import java.util.Iterator;
    import java.util.List;
    import javax.ejb.EJB;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    //import session.DivxFacade;
    //import action.divx;
    import entities.Divx;
    //import java.util.ArrayList;
    /**
    *
    * @author n1o
    */
    public class Appl_controller extends HttpServlet {
    @EJB
    private ControllerLocal controller;


    /**
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    * @throws ServletException if a servlet-specific error occurs
    * @throws IOException if an I/O error occurs
    */

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    //divx divx = new divx();
    /* Creo l'oggetto listaFilm per memorizzare i dati provenienti dal db*/
    List<Divx> listaFilm = (List<Divx>) controller.findAllDivx();
    /* Setto i dati memorizzati in listaFilm nel label "servletName" */
    Iterator itr = listaFilm.iterator();
    while(itr.hasNext()) {
    Divx lista = (Divx) itr.next();
    lista.getTitolo();
    request.setAttribute("servletName", lista);
    }
    /* Ciclo il contenuto della variabile listaFilm*/

    request.getRequestDispatcher("/lista.jsp").forward(request,response);
    /* inoltro la richiesta proveniente dall'index.jsp alla pagina che visualizza la lista*/

    try {

    } finally {
    out.close();
    }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    * @throws ServletException if a servlet-specific error occurs
    * @throws IOException if an I/O error occurs
    */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    /**
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    * @throws ServletException if a servlet-specific error occurs
    * @throws IOException if an I/O error occurs
    */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    /**
    * Returns a short description of the servlet.
    * @return a String containing servlet description
    */
    @Override
    public String getServletInfo() {
    return "Short description";
    }// </editor-fold>

    }

  7. #7
    Iterator itr = listaFilm.iterator();
    while(itr.hasNext()) {
    Divx lista = (Divx) itr.next();
    lista.getTitolo();
    request.setAttribute("servletName", lista);
    }
    Allora, io non capisco alcune cose. Qual è il tuo obiettivo? Vuoi stampare a video in una jsp le informazioni dei Divx che hai in una lista?

    Nel tuo codice che ho quotato sopra non si capisce se tu speri che l'oggetto listaFilm contenga una lista di liste oppure una lista di oggetti Divx. Qusto perché non è chiaro che cosa vuoi mettere in request, se tutta la lista oppure alcune proprietà. Ti consiglio poi di togliere il request.setAttribute all'interno del ciclo while, altrimenti nell'attributo "servletName" avresti sempre l'ultimo valore iterato.




    <% out.print((entities.Divx)request.getAttribute("ser vletName")); %>
    </p>
    Ma che tipo di cast è? Se nella servlet metti in request un oggetto di tipo Divx poi nella jsp devi castare sempre un oggetto di tipo Divx. Poi da lì puoi fare il getTitolo().
    A questo punto conviene che, invece di incollare tutta la servlet, spieghi meglio l'obiettivo della tua funzionalità.
    "Na' sedia te vojo tirà!"

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    io vorrei semplicemente prendermi i dati inseriti nel DB (in questo caso ina lista di divx) e stamparli in una servlet.
    Però in questo ambito i miei ricordi sono molto confusi e frazionari e non riesco a ricordarmi ne a capire come si può fare una cosa del genere.
    Ho un database MySQL
    ho creato entities e session con netbeans ed ho creato un controller che mi fa un findAll
    A questo punto richiamo l'ejb del controller con un annotation e poi devo iterare i risultati che mi da e restituirli ad una jsp.
    (Non so se ho sbagliato il ragionamento).
    Al momento che arrivo nella servlet mi perdo e non so praticamente cosa fare

  9. #9
    Allora metti in request l'oggetto listaFilm, lo recuperi nella jsp (castandolo come List, mi raccomando) e poi lo iteri. Per ogni iterazione casti l'oggetto Divx e da quello fai out.print di quello che restituiscono i metodi get come per esempio getTitolo().
    "Na' sedia te vojo tirà!"

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    Scusami mi potresti scrivere uno pseudo codice sia di quello che va nella servlet sia di quello che va nella jsp?
    mi sono completamente perso
    aiutoooooo

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.