java NullPointerException将int转换为字符串时出错
我有一个调用Java servlet的HTML表单,该表单包含20个复选框(例如名称为java NullPointerException将int转换为字符串时出错,java,Java,我有一个调用Java servlet的HTML表单,该表单包含20个复选框(例如名称为c1,c2,c3…c20) 我试图在java布尔数组cbox中捕获这些复选框的值 下面的代码 int ii=0; boolean cbox[] = new boolean[20]; for (ii=0; ii<20; ii++) cbox[ii] = (req.getParameter("c"+String.valueOf((int)(ii+1))).equals("on"))?true:false
c1
,c2
,c3
…c20
)
我试图在java布尔数组cbox
中捕获这些复选框的值
下面的代码
int ii=0;
boolean cbox[] = new boolean[20];
for (ii=0; ii<20; ii++)
cbox[ii] = (req.getParameter("c"+String.valueOf((int)(ii+1))).equals("on"))?true:false;
当然,这并不能满足我的需要。我一定是在什么地方犯了个愚蠢的错误,但我看不出来。有人看到了吗?当您尝试引用未初始化的对象(null)时,会出现一个错误
查看您的代码,有两种可能:
- req为空
req.getParameter
- 您试图检索的参数不存在,因此为null
req.getParameter(“c”+String.valueOf((int)(ii+1))
cbox[ii] = (req.getParameter("c"+String.valueOf((int)(ii+1))).equals("on"));
编辑:要回答您的评论,您可以验证参数是否容易存在:
String param = req.getParameter("c" + String.valueOf(ii + 1));
cbox[ii] = "on".equals(param);
为了更安全,我还将检查req
以确保它不为空
if(req != null)
{
String param = req.getParameter("c" + String.valueOf((ii + 1));
cbox[ii] = "on".equals(param);
}
注意,我删除了cast(int)ii+1
,因为表达式已经是integer类型
此外,如果ii
仅用作迭代器id,则可以直接在循环中声明它,而不是执行此操作:
int ii = 0;
for(ii = 0; ii < 20; ii++)
intii=0;
对于(ii=0;ii<20;ii++)
您可以直接为(int ii=0;ii<20;ii++)编写
这里的问题是在servlet中,您将在上收到作为html选中复选框的默认值,否则为空。由于未选中所有复选框,因此将获得NPE。请尝试以下代码段:
boolean[] cbox = new boolean[20];
for(int i = 0; cbox.length > i; i++) {
cbox[i] = null != req.getParameter("c" + (1 + i));//if not null then true else false
}
您也可以选择其他选项:
在html/jsp中,创建名称相同但值不同的复选框:
<input type="checkbox" name="cbox" value="1"/>
<input type="checkbox" name="cbox" value="2"/>
...
<input type="checkbox" name="cbox" value="20"/>
在这里,您不会将
上的作为值,根据选择,它的值可能是1
,2
等等。只有复选框才会出现在这里。这可能解释了。。。当复选框未选中时,其值为空。谢谢,但它仍然给出相同的错误。我想这是因为String.valueOf(null)
给出了NullPointerException(请参阅)。@user46688ii+1
不能为null。我的验证实际上是错误的,请参阅新编辑。是的,您的编辑现在工作正常。注意这里有一个拼写错误,但是有一个额外的左括号((ii+1))
应该是(ii+1))
。谢谢加1表示“开”。等于(param)谢谢@arvind,至少我验证了你上面的第一个解决方案非常有效。非常简洁!
<input type="checkbox" name="cbox" value="1"/>
<input type="checkbox" name="cbox" value="2"/>
...
<input type="checkbox" name="cbox" value="20"/>
String[] cbox = req.getParameterValues("cbox");