2016-03-02 56 views
0

我有如下爲空檢查條件語句

if (Sizeval != null) { 
      query.addFilterQuery("size:" + Sizeval); 
     } 

在調試我可以看到Sizeval的價值一個條件語句= NULL

我從一個請求對象獲得這個值,如下

Sizeval = (String) request.getParameter("Attr"); 

但即使Sizeval爲null,它執行query.addFilterQuery statment。

任何建議解決這個問題,PLZ

+0

,空,那addFilterQuery不會被調用。顯然,它被稱爲(至少一次)Sizeval!= null – Stultuske

+1

那麼你是否說JVM中存在一個錯誤? –

+0

你能分享更多的代碼嗎?我們有'request.getParameter'和'null'之間的任何代碼塊嗎? –

回答

3

要改變你的問題。鑑於

HttpServletRequest requst = ... 
String Sizeval = (String) request.getParameter("Attr"); 
if (Sizeval != null) { 
    query.addFilterQuery("size:" + Sizeval); 
} 

你看到執行if體(意味着Sizeval不爲空),但仍Sizeval似乎爲空(在調試器中或在構建的濾光片觀察)。

說明:Sizeval不爲空,但具有文字值"null"。這將添加一個"size:null"篩選器查詢。另外,當在日誌或調試器中查看變量時,它似乎是null

要驗證做

if (Sizeval != null) { 
    if ("null".equals(Sizeval)) 
     throw new IllegalArgumentException("got it"); 
    query.addFilterQuery("size:" + Sizeval); 
} 
每次Sizeval ==
+1

和誰發送的請求似乎有相反的問題... – wero

+0

的request.getParameter(「的Attr」)將返回字符串「空」,而不是空的對象..但在我的JSP作爲參數,我傳遞空對象本身。我改變了我的邏輯。但沒明白這種行爲.. – AVINASH

+0

你能告訴你的JSP來解釋如何通過空對象參數? –

-1

不是100%,但:

如果 '用request.getParameter( 「的Attr」)' 返回null,並且將其轉換爲字符串,是不是這個變成了String'null'?

以前得到過這個問題。

+0

在這種情況下,怎麼能檢查自己是否得到了實際空或不是? – AVINASH

+0

不要將它轉換爲字符串,而是讓它成爲同一個對象。或者在將結果轉換爲字符串之前對結果進行空檢查。 –

+0

我嘗試了所有的評論,即使這是行不通的形成我,如果(用request.getParameter(「的Attr」)!= NULL)。 – AVINASH

1

request.getParameter("Attr");返回null,但是您將值轉換爲String

當您檢查if (Sizeval != null)Sizeval具有值「null」而不是null對象。

request.getParameter已經返回Stringnull,所以剛落鑄造。

+0

如何檢查請求參數的Attr值是否爲空或不是在這種情況下PLZ .. – AVINASH

+1

@AVINASH我回答說,'request.getParameter'已經返回'String'或'null',所以剛落鑄造。 「 – Guy

+0

」Sizeval的值爲「null」而不是空對象。「 - 什麼? – Koshinae