Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    97

    [JAVA]Object e Boolean(classi involucro)

    Sto cercando di inserire in una sessione un valore booleano. Ho fatto così:

    codice:
    session.setAttribute("controlloadmin",new Boolean (true));
    Siccome il metodo vuole oggetti, e un tipo primitivo come un booleano non può esservi inserito ho bisogno della classe involucro Boolean.

    1)L'inserimento è corretto?

    Poi vorrei maneggiare questo attributo ma non ci riesco. Questo codice non funziona:

    codice:
         Object controllo=session.getAttribute("controlloadmin");
                  controlloadmin = (Boolean)controllo;
    2)Perchè ho dei problemi di cast da Boolean a String?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    L'inserimento è corretto e il recupero, grossomodo, anche:
    codice:
    session.setAttribute("controlloadmin",new Boolean (true));
    ...
    Boolean controlloadmin = (Boolean) session.getAttribute("controlloadmin");
    Ho detto "grossomodo" proprio perchè non so come è dichiarata la variabile controlloadmin alla quale provi ad assegnare il valore.

    I problemi di cast potrebbero essere dovuti al fatto che, come precisavo prima, non sappiamo se controlloadmin sia dichiarata correttamente di tipo Boolean o, erroneamente, di tipo String.

    Il codice che ho riportato io è corretto.


    Ciao.
    "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

  3. #3
    perché un Boolean non è uno String!
    Per ogni oggetto hai il metodo toString se ne vuoi la rappresentazione testuale (per le classi che non sono del JDK è responsabilità di chi le realizza di avere una rappresentazione adeguata).

    Altra cosa: tieni conto che il toString non dovrebbe essere mai usato per "indovinare" il contenuto degli oggetti, in quanto la sua implementazione può variare nel tempo (diciamo che è utile solo per rendere "umanamente leggibile" il contenuto di un oggetto")...
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    97
    Ho detto "grossomodo" proprio perchè non so come è dichiarata la variabile controlloadmin alla quale provi ad assegnare il valore.

    I problemi di cast potrebbero essere dovuti al fatto che, come precisavo prima, non sappiamo se controlloadmin sia dichiarata correttamente di tipo Boolean o, erroneamente, di tipo String.
    Ciao. Si in effetti mi ero scordato un pezzo in cui dichiaravo correttamente controlloadmin come Boolean. Ok, almeno il codice era corretto e devo fare altri errori ..


    perché un Boolean non è uno String!
    Per ogni oggetto hai il metodo toString se ne vuoi la rappresentazione testuale (per le classi che non sono del JDK è responsabilità di chi le realizza di avere una rappresentazione adeguata).

    Altra cosa: tieni conto che il toString non dovrebbe essere mai usato per "indovinare" il contenuto degli oggetti, in quanto la sua implementazione può variare nel tempo (diciamo che è utile solo per rendere "umanamente leggibile" il contenuto di un oggetto")...
    Questo discorso non l'ho mica capito ..

    cioè io vorrei infilare dentro la sessione un oggetto di tipo booleano. Prima avevo implementato tutto con stringhe.Cioè avevo infilato in sessionecon setAttribute delle stringhe come "v" oppure "f" (dentro un servlet) e poi facevo il controllo nelle jsp come:

    codice:
         ...
             session = request.getSession();
             String controllo=(String) session.getAttribute("controlloadmin");
                  ...
    e poi andavo a farmi il controllo con un .equals rispetto alle stringhe "v" e "f".
    E tutto tornava.

    Poi ho detto"così non è elegante!". Farò il controllo con un tipo booleano. Ma non riesco a farlo .

    qualche consiglio?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    Segui il codice che ti ho postato sopra. Occhio, però, che per fare i controlli devi tornare ad avere un valore boolean (primitivo):
    codice:
    sessione.setAttribute("controlloadmin", new Boolean(true));
    ...
    Boolean ctrl = (Boolean) sessione.getAttribute("controlloadmin");
    if ( ctrl.booleanValue() ) {
       // controlloadmin è vero
    } else {
       // controlloadmin è falso.
    }
    Ciao.
    "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

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [JAVA]Object e Boolean(classi involucro)

    Originariamente inviato da _SC_
    Siccome il metodo vuole oggetti, e un tipo primitivo come un booleano non può esservi inserito ho bisogno della classe involucro Boolean.
    Se usi almeno Java 5 c'è l'autoboxing/unboxing che aiuta.

    Originariamente inviato da _SC_
    1)L'inserimento è corretto?
    Fatto così, direi di sì.

    Originariamente inviato da _SC_
    2)Perchè ho dei problemi di cast da Boolean a String?
    Il concetto è che un oggetto a runtime non può "trasformarsi" in un altro oggetto.
    E comunque Boolean e String sono tipi non compatibili tra di loro.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    97
    Originariamente inviato da LeleFT
    Segui il codice che ti ho postato sopra. Occhio, però, che per fare i controlli devi tornare ad avere un valore boolean (primitivo):
    codice:
    sessione.setAttribute("controlloadmin", new Boolean(true));
    ...
    Boolean ctrl = (Boolean) sessione.getAttribute("controlloadmin");
    if ( ctrl.booleanValue() ) {
       // controlloadmin è vero
    } else {
       // controlloadmin è falso.
    }
    Ciao.
    Si a livello di codice Java mi torna tutto. il problema è se faccio:
    codice:
    sessione.setAttribute("controlloadmin", new Boolean(true));
    dentro un servlet
    e poi vado su una jsp dove faccio il resto mi da un problema di cast in questo punto:
    codice:
    Boolean ctrl = (Boolean) sessione.getAttribute("controlloadmin");
    Non riesco a capire come non sia possibile fare un controllo booleano su un attributo della sessione.. in ogni caso nella jsp quando vado a usare il getAttribute mi considera una stringa e non mi fa fare il cast..

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    97
    ho risolto...
    il servlet andava su un'altra jsp .. hai voglia a far modifiche..

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,305
    Perchè non usi JSTL per le JSP? Ti risparmi tanta fatica:
    codice:
    // Sulla Servlet:
    sessione.setAttribute("controlloadmin", new Boolean(true));
    
    // Sulla JSP:
    <c:if test="${controlloadmin}">
       ...
    </c:if>
    Ciao.
    "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

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    97
    Grazie del consiglio LeleFT. Per ora non voglio mettere troppa carne al fuoco ma ci ho dato un'occhiata e ci tornerò sopra con calma.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.