[英]Request.getParameterValues returns null when not in IE5 quirks mode
[英]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.