这两天做项目遇到一个很困惑的问题,可能比较简单但是我始终没有解决掉,特粘出来希望能得到高手的指点,谢谢了
问题是:我将数据库中查询到的数据依次循环到表单中,每行信息后有一个复选框,并给复选框赋唯一的id值,我想在此页面点击选中多个或一个复选框后可以进行数据的批删除,但是当我选中点击删除按钮后,页面跳转出现500,空指针错误。
jsp页面代码:
<html:form action="taskManageAction.do" scope="session">
<td width="34" align="left" class="text" style="CURSOR: hand" onClick="openwin('/taskManageAction.do');"><strong>删除</strong></td> <logic:iterate id="checkd" name="check" scope="session">
...........
<td width="57">
<html:multibox property="selecteditems">
<bean:write name="checkd" property="rootID"/>
</html:multibox>
</td>
...........
</logicLiterate>
</html:form>
formbean代码:public class TaskManageForm extends ActionForm {
private String selecteditems[];
public String[] getSelecteditems() { return selecteditems; } public void setSelecteditems(String[] selecteditems) { this.selecteditems=selecteditems; }
}
action代码:public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
TaskManageForm tmf=(TaskManageForm)form;
int j=tmf.getSelecteditems().length;
for(int i=0;i<j;i++) { System.out.println(tmf.getSelecteditems()[i]); }
出现的异常:
HTTP Status 500 -
java.lang.NullPointerException
com.opensource.task.TaskManageAction.execute(TaskManageAction.java:49)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:465)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1422)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:505)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:123)
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:66)
com.opensource.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:178)
问题是:我将数据库中查询到的数据依次循环到表单中,每行信息后有一个复选框,并给复选框赋唯一的id值,我想在此页面点击选中多个或一个复选框后可以进行数据的批删除,但是当我选中点击删除按钮后,页面跳转出现500,空指针错误。
jsp页面代码:
<html:form action="taskManageAction.do" scope="session">
<td width="34" align="left" class="text" style="CURSOR: hand" onClick="openwin('/taskManageAction.do');"><strong>删除</strong></td> <logic:iterate id="checkd" name="check" scope="session">
...........
<td width="57">
<html:multibox property="selecteditems">
<bean:write name="checkd" property="rootID"/>
</html:multibox>
</td>
...........
</logicLiterate>
</html:form>
formbean代码:public class TaskManageForm extends ActionForm {
private String selecteditems[];
public String[] getSelecteditems() { return selecteditems; } public void setSelecteditems(String[] selecteditems) { this.selecteditems=selecteditems; }
}
action代码:public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
TaskManageForm tmf=(TaskManageForm)form;
int j=tmf.getSelecteditems().length;
for(int i=0;i<j;i++) { System.out.println(tmf.getSelecteditems()[i]); }
出现的异常:
HTTP Status 500 -
java.lang.NullPointerException
com.opensource.task.TaskManageAction.execute(TaskManageAction.java:49)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:465)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1422)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:505)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:123)
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:66)
com.opensource.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:178)
for (int i = 0; i < selectboxs.length; i++) {
System.out.println(selectboxs[i] );
}
你试一下
<td width="34" align="left" class="text" style="CURSOR: hand" onClick="openwin('/taskManageAction.do');"> <strong>删除 </strong> </td>
你点击这个按钮能把form里面的数据提交嘛?你搞个submit的按钮试试。
if(tmf.getSelecteditems().length>=0)
int j=tmf.getSelecteditems().length;
<td width="34" align="left" class="text" style="CURSOR: hand" onClick="openwin('/taskManageAction.do');"> <strong>删除 </strong> </td>
很明显了你删除按钮又没有提交任何数据,只是转向到了这个taskManageAction……
文字也可以啊。目的就是为了这个form能够提交。所以点文字,只要让他触发表单提交操作就可以啦。参照11楼,formId改成你自己的即可。