我正在尝试从JSP页面到Servlet获取表行但最终出现以下错误。这样做的正确方法是什么?
Severe: java.lang.NullPointerException
at com.pg.servlet.session.Controller.doPost(Controller.java:125)
的java:
String[] recordsToUpdate = request.getParameterValues("attTable");
try {
for (int i = 0; i < recordsToUpdate.length; i++) {
total = SQLHelper.Update(recordsToUpdate[2], recordsToUpdate[3], recordsToUpdate[0]);
}
} catch (Exception e) {
e.printStackTrace();
}
HTML:
<table id="attTable" class="table">
<tr class="header">
<th>Id</th>
<th>Name</th>
<th>Present?</th>
<th>Remarks</th>
</tr>
<c:forEach var="List" items="${myVar}" varStatus="iter">
<tr class="row">
<td>${List.Id}</td>
<td>${List.Name}</td>
<td><input type="checkbox" name="chkDisperse"></td>
<td>
<input type="text" name="remarks">
</td>
</tr>
</c:forEach>
</table>
答案 0 :(得分:1)
请求不包含名称参数&#34; attTable&#34;因为它不是表单输入类型的一部分。这会导致recordsToUpdate为null,因此在null对象上调用方法长度时会出现NullpointerException。
答案 1 :(得分:0)
您可以在每个tr中添加名称='Id'的隐藏字段,并且必须在servlet中传递request.getParameterValues(“Id”)。请检查以下stackoverflow问题。
Accessing HTML-Input field arrays in Java Servlet / Structure of the input fields