servlet request.getParameterValues(fieldName)返回null并抛出异常

时间:2013-04-29 07:43:22

标签: java servlets nullpointerexception

我想获取参数值,有时我不发送它们并返回给我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);
    }
}

4 个答案:

答案 0 :(得分:6)

应该是

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

因为,如果您的值为null(评估为false),则语句中的OR条件会执行OR的其他部分,这会抛出NPE

如果您在&&处提供false,则会在null!=values遇到{{1}}时进行SHORT-CIRCUIT语句评估。

答案 1 :(得分:1)

这是AND&&应该用于测试是否满足两个条件的运算符,这是您在实例中所需要的。

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

答案 2 :(得分:0)

中的

不同,如果values为空,则不会进行下一次检查。

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

也请参考&& (AND) and || (OR) in IF statements

答案 3 :(得分:0)

&&||遵循短路评估。

即使不需要,这些操作符也不会执行右侧表达式。

对于&&运算符,如果在LHS处false,则它不会执行下一个表达式
对于||运算符,如果在LHS true,则它不会执行下一个表达式

因此,对于您的状况检查,需要&&操作以避免NullPointerException

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