簡體   English   中英

servlet request.getParameterValues(fieldName)返回null並引發異常

[英]servlet request.getParameterValues(fieldName) returns null and throw exception

我想獲取參數值,有時我不發送它們,它返回null和確定。 但是當我對返回字符串數組進行預檢查時,servlet拋出java.lang.NullPointerException

而我只是在它為null時什么也不做。 (繼續進行)

String[] values = null; 
if(request.getParameterValues(fieldName).length>0)
{
    values = request.getParameterValues(fieldName);

    if(null!=values || values.length>0) // HERE IT throws NullPointerException 
    {
        Collections.addAll(strlist, values);
    }
}

它應該是

if(null!=values && values.length>0)

因為,如果您的值為null (評估為false ),則語句中的OR條件將執行OR的另一部分,從而引發NPE

如果在其中提供&& ,則在null!=values處遇到false時,它將對語句評估進行SHORT-CIRCUIT

應該使用AND &&運算符來測試是否同時滿足兩個條件,這是您實例中需要的。

if (null != values && values.length > 0)

如果values為null,則不會進行下一個檢查。

if(null!=values && values.length>0) // change to and 
 {
         Collections.addAll(strlist, values);
 }

也請參考&&(AND)和|| (OR)在IF語句中

&&|| 遵循短路評估。

也就是說,如果不需要,這些運算符將不會執行右側表達式。

對於&&運算符,如果LHS為false ,則它將不執行下一個表達式
用於|| 運算符,如果在LHS中為true ,則它將不執行下一個表達式

因此對於您的情況檢查,它需要&&操作以避免NullPointerException

if(null!=values && values.length>0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM