2017-10-03 3 views
0

Ich versuche, Checkbox-Wert aus HTML-Post zu bekommen. Mein Problem ist, dass die Post on or null anstelle von true or false zurückgibt, also muss ich es in ein True von false konvertieren, um in die Datenbank einzufügen.Vergleichen von zwei Strings Geben Sie java.lang.NullPointerException

Boolean hasProfile7 = Boolean.valueOf(request.getParameter("hasProfile7")) 

hasProfile7 ist auch falsch, wenn es "auf"

Boolean hasProfile7 = (request.getParameter("hasProfile7").equals("on")) ? true : false; 

Diese stürzt meine Anwendung java.lang.NullPointerException geben, wenn das Kontrollkästchen nicht markiert ist (false)

Boolean hasProfile7 = (request.getParameter("hasProfile7") == "on") ? true : false; 

und das gibt mir immer falsch.

Was kann ich tun? Ich will nur die Bool um wahr zu sein, wenn „on“ und falsch, wenn „Null“

+2

Sie verwenden verwenden Sie können einen ternären Ausdruck (request.getParameter("hasProfile7").equals("on")) ? true : false; übersetzt ' "auf" .equals (request ...) 'um die NPE zu vermeiden. – assylias

Antwort

1

Erster Punkt

Boolean hasProfile7 = Boolean.valueOf(request.getParameter("hasProfile7")) 

Du

tun
Boolean.valueOf(<A String>) 

Nach https://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html#valueOf(java.lang.String) public static Boolean valueOf(String s) „Gibt einen Boolean mit einem Wert, der durch die angegebene Zeichenfolge dargestellt. Die Boolesche zurückgegeben stellt einen echten Wert, wenn der String-Argument nicht null ist und ist gleich, Fall zu ignorieren, auf die Zeichenkette „true“.“

Zweiter Punkt

Boolean hasProfile7 = (request.getParameter("hasProfile7").equals("on")) ? true : false; 

Hier gelangen Sie zur rigth Sache nahe .. zu tun, Ihr Problem ist, dass request.getParameter("hasProfile7") kehrt null und so haben Sie *null*.equals("on") und das ist, warum Sie die NPE bekommen

Wenn Sie eine vordefinierte Zeichenfolge haben, legen Sie sie immer auf der linken Größe:

Hier
Boolean hasProfile7 = ("on".equals(request.getParameter("hasProfile7"))) ? true : false; 

, auch wenn request.getParameter("hasProfile7") ist null Sie jede Ausnahme und es wird einfach zurückgeben falsch

Dritter Punkt

Boolean hasProfile7 = (request.getParameter("hasProfile7") == "on") ? true : false; 

Hier können Sie vergleichen das Objekt "on" zum Objekt request.getParameter("hasProfile7"). Wenn die Werte gleich sind, sind die Objekte nicht.

Für den letzten Punkt, warum Sie

if true --> true 
if false --> false 

Sie schreiben konnte nur

Boolean hasProfile7 = "on".equals(request.getParameter("hasProfile7")) 
3

Dies ist null sichere Art und Weise mit String-Konstante zu vergleichen:

"some-value".equals(variable) // ok 

Der folgende Codeausschnitt wird ein Null-Zeiger werfen Ausnahme, wenn variable ist null, weil es nicht erlaubt ist equals Methode auf null-Wert zu nennen:

variable.equals("some-value") // not recomended 

Diese Methode true zurück, wenn der Wert „auf“ enthält, andernfalls wird false zurückgegeben:

public boolean isChecked(final String value) { 
    if (Objects.isNull(value)) { 
     return false; 
    } 

    if ("on".equals(value.toLowerCase())) { 
     return true; 
    } 

    return false; 
} 
Verwandte Themen