如果未选中复选框,则为NullPointerException

时间:2014-04-28 16:45:42

标签: java jsp java-ee servlets

我在html中有一个复选框,如下所示:

 <input type="checkbox" name="subscribe" value="subscribe">Subscribe For Answers</input>

在我的servlet中,我通过做这样的事情来获得它的价值:

String checked=new String();
checked=request.getParameter("subscribe");

if(!checked.isEmpty()){
            if(checked.compareTo("subscribe")==0)
            {
                ps.setInt(4, 1);
            }
}
else  {
            ps.setInt(4,0);
}

但是如果没有选中复选框,那么它会给出空指针异常。请帮助纠正它。

1 个答案:

答案 0 :(得分:1)

如果未选中该复选框,则该请求不会包含任何subscribe参数,因此checked将为null。你想要这样的东西:

String checked = request.getParameter("subscribe");
if (checked != null && !checked.isEmpty()) {
    ...
} else {
    ...
}

顺便说一句,如果参数值提供但是不是“订阅”,你真的不想打ps.setInt(4, ...)吗?目前,您有三种选择:

  • 未提供:设为0
  • 提供并等于“subscribe”:设置为1
  • 否则:不要设置

(还不清楚你为什么使用String.compare而不是String.equals ...)