我正在尝试使用下面的代码获取复选框的检查状态,但如果未选中任何复选框,则会出现以下错误。我的目标是使用复选框状态更新数据库表。如果选中,则返回1,否则为0。
Error:
Severe: java.lang.NullPointerException
at doPost(Controller.java:125)
的java:
String[] chkDisperse = request.getParameterValues("chkDisperse");
int status;
for (int i = 0; i < attId.length; i++) {
if (chkDisperse[i] == null) {
//(line 25 here)
status = 0;
}
else
{
status = 1;
}
HTML:
<c:forEach var="AttList" items="${att}" varStatus="iter">
<tr id="test">
<td style="text-align: center;"><input name="attId" type="hidden" value="${AttList.attId}" /></td>
<td style="text-align: center;"><input type="checkbox" name="chkDisperse" value="${AttList.isPresentDisperse}" ${AttList.isPresentDisperse == 1 ? 'checked' : ''}></td>
</tr>
</c:forEach>
答案 0 :(得分:1)
似乎所选的复选框值未传递给servlet。因此,您在此处将数组视为null,
String[] chkDisperse = request.getParameterValues("chkDisperse");
。
你最终会在这条线上找到NPE:
if (chkDisperse[i] == null)
确保复选框已正确包含在表单标记中。如果是ajax调用,请检查从Web浏览器控制台发送的参数。
被修改
如果没有选中,我想将状态设置为0
在jsp中导入的jsp或js文件中,试试这个jQuery解决方案:
$(function() { //dom ready
$('input[name=chkDisperse]').on('change', function() {//change event handler
this.value = this.checked ? '1' : '0';
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="checkbox" name="chkDisperse" value="0" />
<input type="checkbox" name="chkDisperse" value="1" />
&#13;
这是普通的解决方案:
var putState = function(input) {
input.value = input.checked ? '1' : '0';
};
&#13;
<input type="checkbox" name="chkDisperse" value="0" onchange='putState(this);' />
<input type="checkbox" name="chkDisperse" value="1" onchange='putState(this);' />
&#13;