这两天做项目遇到一个很困惑的问题,可能比较简单但是我始终没有解决掉,特粘出来希望能得到高手的指点,谢谢了
 问题是:我将数据库中查询到的数据依次循环到表单中,每行信息后有一个复选框,并给复选框赋唯一的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)

解决方案 »

  1.   

    String selectboxs[] = request.getParameterValues("selecteditems");
    for (int i = 0; i < selectboxs.length; i++) {
    System.out.println(selectboxs[i] );
    }
    你试一下
      

  2.   

    第49行是:int j=tmf.getSelecteditems().length;
      

  3.   

    我是点击“删除”按钮
    <td width="34" align="left" class="text" style="CURSOR: hand"  onClick="openwin('/taskManageAction.do');"> <strong>删除 </strong> </td> 
      

  4.   


    你点击这个按钮能把form里面的数据提交嘛?你搞个submit的按钮试试。
      

  5.   

    int j=tmf.getSelecteditems().length;改为
    if(tmf.getSelecteditems().length>=0)
    int j=tmf.getSelecteditems().length;
      

  6.   

    是不是我删除按钮的问题?
    <td width="34" align="left" class="text" style="CURSOR: hand"  onClick="openwin('/taskManageAction.do');"> <strong>删除 </strong> </td> 
      

  7.   


    很明显了你删除按钮又没有提交任何数据,只是转向到了这个taskManageAction……
      

  8.   

    为什么用submit就好使呢?用文字做按钮就不可以呢?逝月谢谢你,但是怎么用文字实现这个submit按钮呢?
      

  9.   

    document.all.formID.submit();用按钮或文字都可以
      

  10.   


    文字也可以啊。目的就是为了这个form能够提交。所以点文字,只要让他触发表单提交操作就可以啦。参照11楼,formId改成你自己的即可。
      

  11.   

    逝月,njzdl 还有楼上其他的谢谢你们了,我就20分了,你两个别嫌我小气哦,呵呵
      

  12.   

    哦,对了,html:form标签指定HTML元素的ID的话,要用styleId=“”,或者不指定的话,应该会给你的form生成一个名字,是你配置的actionForm的名字。