Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203

    nullPointerException se dal db ritorna null

    ciao a tutti ragazzi ho un piccolo problema dal mio db mi tornano dei valori char e devo fare una transcodifica che ho fatto, ma dal momento in cui il valore memorizzato nel db è un null mi va in null pointer exception dove sbaglio?
    questo è il mio metodo negli entity della mia enterprice application:

    codice:
     
    
    public String getDescrizioneFlagControl(){
            if(flagControl =='M') {
                return "Mancante";
            } else if(flagControl =='C') {
                return "Controllato";
            } else if(flagControl =='E') {
                return "Eccedente";
            } else if(flagControl =='B') {
                return "Controllato in Blocco";
            } else if(flagControl =='X') {
                return "Controllato in Blocco ma Expired";
            }
            return " ";
        }
    grazie a tutti per l'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    76
    codice:
    public String getDescrizioneFlagControl(){
            if(flagController == null){
                return something;
    
            if(flagControl =='M') {
                return "Mancante";
            } else if(flagControl =='C') {
                return "Controllato";
            } else if(flagControl =='E') {
                return "Eccedente";
            } else if(flagControl =='B') {
                return "Controllato in Blocco";
            } else if(flagControl =='X') {
                return "Controllato in Blocco ma Expired";
            }
            return " ";
        }

    no???

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    grazie mille

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,323
    Originariamente inviato da HammerOn
    codice:
    public String getDescrizioneFlagControl(){
            if(flagController == null){
                return something;
    
            if(flagControl =='M') {
                return "Mancante";
            } else if(flagControl =='C') {
                return "Controllato";
            } else if(flagControl =='E') {
                return "Eccedente";
            } else if(flagControl =='B') {
                return "Controllato in Blocco";
            } else if(flagControl =='X') {
                return "Controllato in Blocco ma Expired";
            }
            return " ";
        }
    no???
    ???

    Cos'è flagController? Se intendevi scrivere "flagControl" al posto di "flagController", allora i casi sono 2:

    1) flagControl è una variabile di tipo char e il primo if è errato
    2) flagControl è una variabile di tipo String e sono sbagliati tutti gli if dopo il primo.


    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    Ciao Lele il primo if è sbagliato il codice l'ho modificato in questo modo:

    codice:
     
    public String getDescrizioneFlagControl(){
            if(flagControl == null){
                return "&-nbsp;";      <--ho utilizzato questa stringa(senza trattino) per mascherare il null nella jsp e vedere uno spazio bianco
            } else  if(flagControl =='M') {
                return "Mancante";
            } else if(flagControl =='C') {
                return "Controllato";
            } else if(flagControl =='E') {
                return "Eccedente";
            } else if(flagControl =='B') {
                return "Controllato in Blocco";
            } else if(flagControl =='X') {
                return "Controllato in Blocco ma Expired";
            }
            return " ";

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,323
    Originariamente inviato da n1o
    Ciao Lele il primo if è sbagliato il codice l'ho modificato in questo modo:

    codice:
     
    public String getDescrizioneFlagControl(){
            if(flagControl == null){
                return "&-nbsp;";      <--ho utilizzato questa stringa(senza trattino) per mascherare il null nella jsp e vedere uno spazio bianco
            } else  if(flagControl =='M') {
                return "Mancante";
            } else if(flagControl =='C') {
                return "Controllato";
            } else if(flagControl =='E') {
                return "Eccedente";
            } else if(flagControl =='B') {
                return "Controllato in Blocco";
            } else if(flagControl =='X') {
                return "Controllato in Blocco ma Expired";
            }
            return " ";
    Dunque "flagControl" è di tipo String.
    Se è così, tutti gli altri if sono sbagliati: gli oggetti si confrontano usando il metodo equals(), non l'operatore di confronto ==.

    Inoltre, stai confrontando un oggetto String con un tipo primitivo char e non con una stringa contenente un solo carattere...

    codice:
            } else if( flagControl.equals("C") ) {
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    76
    dalla mia esperienza condadina nella produzione di codice sorgente aggiungerei un

    codice:
    flagControl.compareTo("AA")==0
    a volte il metodo equals mi ha dato problemi...di seguito il perche

    http://leepoint.net/notes-java/data/...reobjects.html

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,323
    Originariamente inviato da HammerOn
    dalla mia esperienza condadina nella produzione di codice sorgente aggiungerei un

    codice:
    flagControl.compareTo("AA")==0
    a volte il metodo equals mi ha dato problemi...di seguito il perche

    http://leepoint.net/notes-java/data/...reobjects.html
    Non vedo che problemi possa aver dato. A me non ne ha mai dato nessuno.
    L'unico punto che ho trovato è riferito alla classe BigDecimal, che qui non viene trattata.


    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    Ciao Lele, allora FlagControl è di tipo char, nel db sono memorizzati dei char cha hanno un significato ben preciso, nel mio tool mi è stato chiesto di non visualizzare questi char ma di "tradurli" in maniera + parlante, perciò nel mio entity bean questo è il metodo getFlagControl
    Codice PHP:
    @Column(name "FLAG_CONTROL")
        private 
    Character flagControl;  

    public 
    Character getFlagControl() {
            return 
    flagControl;
        }

        public 
    void setFlagControl(Character flagControl) {
            
    this.flagControl flagControl;
        } 
    Dunque "flagControl" è di tipo String.
    Se è così, tutti gli altri if sono sbagliati: gli oggetti si confrontano usando il metodo equals(), non l'operatore di confronto ==.
    Io li ho resi "parlanti" creando il metodo getDescrizioneFlagControl e modificando il tipo di ritorno da un char ad una stringa, prendendomi il char che mi ritorna dal db in questo modo:

    Codice PHP:
    public String getDescrizioneFlagControl(){
            if(
    flagControl == null){
                return 
    "&-nbsp;";
            } else if(
    flagControl =='M') {
                return 
    "Mancante";
            } else if(
    flagControl =='C') {
                return 
    "Controllato";
            } else if(
    flagControl =='E') {
                return 
    "Eccedente";
            } else if(
    flagControl =='B') {
                return 
    "Controllato in Blocco";
            } else if(
    flagControl =='X') {
                return 
    "Controllato in Blocco ma Expired";
            }
            return 
    " ";
        } 
    Adesso funziona, la codifica viene fatta correttamente ed in caso di valore null non mi va più in NullPointerException, sonon riuscito a mascherare il valore null facendomi stampare uno spazio vuoto nella pagina jsp.

    Mi sono mosso nella maniera corretta?
    C'è una maniera più performante per impostare il tutto (so che avrei potuto utilizzare lo switch/case sicuramente sarebbe stato + corretto come modus operandi invece degli if/else)

    Cominque grazie a tutti per l'aiuto.
    Un saluto

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.