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

    ERRORE: java.lang.Integer cannot be cast to java.lang.String

    ciao a tutti, sono quasi alla fine del mio progetto, un sito web dinamico che gestisce un lido balneare, con eclipse, in java e con pagine jsp.
    Sto facendo adesso la parte in cui un utente può prenotare una cabina in questo lido. alla fine della prenotazione, l'utente ha deciso la data iniziale, la data finale, ha scelto eventuali servizi (sono acqua, asciugamani, elettricità), e io faccio il conto dello sconto, e dovrei aggiungere una riga alla tabella "Prenotazioni" nel mio database (mysql).
    Sto usando le session per tenere traccia dei dati nelle pagine jsp.

    nell'ultima pagina jsp, quella che richiama il metodo che aggiunge la riga alla tabella prenotazioni, richiamo un po di dati con le session. l'errore me lo da in quell'occasione.
    Il problema è che ho grosse difficoltà a passare gli INT alle sessioni...ho perfino provato a convertirli in stringhe, passarli alla sessione, riconvertirli in INT, ma niente....
    il codice dove prendo gli INT è:

    codice:
    calcolaDurata stagista = new calcolaDurata();
        
    
        int durata = stagista.durata(dataI, dataF);
        String durataStr = Integer.toString(durata);
        
        session.setAttribute("durataStr", durata);                      

    il codice dove provo a riprendermi la "durata", che è quello alla pagina jsp successiva, è:

    codice:
    String durataS = (String) session.getAttribute("durataStr");
        int durata = Integer.parseInt("durataS");
        System.out.println("DURATA INT " + durata);                      

    mi da l'errore:

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


    la linea 21 è proprio

    String durataS = (String) session.getAttribute("durataStr");

    e dice poi appunto:

    java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ciao è benvenuta
    javascript e diverso da Java, segnalo al moderatore attendi il trasferimento nel forum competente, e in futuro fai più attenzione.

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    ehm....

    Guarda bene:
    int durata = Integer.parseInt("durataS");

    Qui cerca di convertire la stringa "durataS" in un numero... ma chiaramente non è un numero.

    Immagino tu intendessi

    int durata = Integer.parseInt(durataS);
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    ehm....

    Guarda bene:
    int durata = Integer.parseInt("durataS");

    Qui cerca di convertire la stringa "durataS" in un numero... ma chiaramente non è un numero.

    Immagino tu intendessi

    int durata = Integer.parseInt(durataS);
    Giusto. Però il suo problema è alla linea prima

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    codice:
    String durataS =(String) session.getAttribute("durataStr");
    intendi qui? Significa allora che il dato è già in formato intero e che quindi non hai bisogno di passare per quel cast.
    RTFM Read That F*** Manual!!!

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Quote Originariamente inviata da marina87 Visualizza il messaggio
    Il problema è che ho grosse difficoltà a passare gli INT alle sessioni...ho perfino provato a convertirli in stringhe, passarli alla sessione, riconvertirli in INT, ma niente....
    Non capisco perché. Con il vecchio java (fino a 1.4) sarebbe stato in effetti un problema, ma le versioni attuali convertono in automatico l'int in un Integer. Il tuo problema comunque è che tu crei la stringa durataStr, ma poi salvi in sessione l'int durata (che java converte in Integer) e quindi quando vai a recuperarlo ti trovi un Integer che non può essere convertito in String.
    In ogni caso, elimina tutti questi giochini, salva in sessione l'intero e recuperalo come tale, dovrebbe funzionare. Al limite lo recuperi come Integer

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da luca200 Visualizza il messaggio
    Giusto. Però il suo problema è alla linea prima
    NOn ci avevo fatto caso, mi è caduto l'occhio sul parse errato e non ho letto tutto il messaggio ^^'
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Oltre a tutto quello che ti è già stato detto, guarda bene cosa stai facendo:


    codice:
    int durata = stagista.durata(dataI, dataF);   <--+
    String durataStr = Integer.toString(durata);     |
                                                     |
    session.setAttribute("durataStr", durata); ------+

    In sessione, stai inserendo l'attributo di nome "durataStr" a cui stai associando l'intero chiamato durata (e molto probabilmente non è ciò che volevi fare! Credo tu volessi associare il valore della variabile durataStr, che è una stringa).

    Più avanti, infatti, lo vai a ripescare in questo modo:


    codice:
    String durataS = (String) session.getAttribute("durataStr");

    E qui casca il palco, lanciando la ClassCastException, perchè alla chiave "durataStr" non hai associato una stringa, ma un intero.


    Ciao.
    Ultima modifica di LeleFT; 16-07-2014 a 18:10
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.