获取复选框可以检查状态

时间:2015-06-10 03:44:27

标签: java jsp

我正在尝试使用下面的代码获取复选框的检查状态,但如果未选中任何复选框,则会出现以下错误。我的目标是使用复选框状态更新数据库表。如果选中,则返回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>

1 个答案:

答案 0 :(得分:1)

似乎所选的复选框值未传递给servlet。因此,您在此处将数组视为null,

String[] chkDisperse = request.getParameterValues("chkDisperse");

你最终会在这条线上找到NPE:

if (chkDisperse[i] == null)

确保复选框已正确包含在表单标记中。如果是ajax调用,请检查从Web浏览器控制台发送的参数。

被修改

  

如果没有选中,我想将状态设置为0

在jsp中导入的jsp或js文件中,试试这个jQuery解决方案:

&#13;
&#13;
$(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;
&#13;
&#13;

这是普通的解决方案:

&#13;
&#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;
&#13;
&#13;