[英]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.