繁体   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