html:multibox赋值后在action中得不到的问题---急!!!

老猫的TOM 2008-11-17 02:41:26
这两天做项目遇到一个很困惑的问题,可能比较简单但是我始终没有解决掉,特粘出来希望能得到高手的指点,谢谢了
问题是:我将数据库中查询到的数据依次循环到表单中,每行信息后有一个复选框,并给复选框赋唯一的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)
...全文
117 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
老猫的TOM 2008-11-17
  • 打赏
  • 举报
回复
嘿嘿谢谢你哦,希望以后能好好向你这样的人学习!!前进前进前前进
jianpc 2008-11-17
  • 打赏
  • 举报
回复
哦,对了,html:form标签指定HTML元素的ID的话,要用styleId=“”,或者不指定的话,应该会给你的form生成一个名字,是你配置的actionForm的名字。
老猫的TOM 2008-11-17
  • 打赏
  • 举报
回复
逝月,njzdl 还有楼上其他的谢谢你们了,我就20分了,你两个别嫌我小气哦,呵呵
jianpc 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 qq355667166 的回复:]
为什么用submit就好使呢?用文字做按钮就不可以呢?逝月谢谢你,但是怎么用文字实现这个submit按钮呢?
[/Quote]

文字也可以啊。目的就是为了这个form能够提交。所以点文字,只要让他触发表单提交操作就可以啦。参照11楼,formId改成你自己的即可。
njzdl 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 qq355667166 的回复:]
为什么用submit就好使呢?用文字做按钮就不可以呢?逝月谢谢你,但是怎么用文字实现这个submit按钮呢?
[/Quote]
document.all.formID.submit();用按钮或文字都可以
老猫的TOM 2008-11-17
  • 打赏
  • 举报
回复
为什么用submit就好使呢?用文字做按钮就不可以呢?逝月谢谢你,但是怎么用文字实现这个submit按钮呢?
njzdl 2008-11-17
  • 打赏
  • 举报
回复
onClick="formId.submit();"
jianpc 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qq355667166 的回复:]
是不是我删除按钮的问题?
<td width="34" align="left" class="text" style="CURSOR: hand" onClick="openwin('/taskManageAction.do');"> <strong>删除 </strong> </td>
[/Quote]

很明显了。。。你删除按钮又没有提交任何数据,只是转向到了这个taskManageAction……
老猫的TOM 2008-11-17
  • 打赏
  • 举报
回复
是不是我删除按钮的问题?
<td width="34" align="left" class="text" style="CURSOR: hand" onClick="openwin('/taskManageAction.do');"> <strong>删除 </strong> </td>
njzdl 2008-11-17
  • 打赏
  • 举报
回复
int j=tmf.getSelecteditems().length;

改为
if(tmf.getSelecteditems().length>=0)
int j=tmf.getSelecteditems().length;
jianpc 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qq355667166 的回复:]
我是点击“删除”按钮
<td width="34" align="left" class="text" style="CURSOR: hand" onClick="openwin('/taskManageAction.do');"> <strong>删除 </strong> </td>
[/Quote]

你点击这个按钮能把form里面的数据提交嘛?你搞个submit的按钮试试。
老猫的TOM 2008-11-17
  • 打赏
  • 举报
回复
小鱼儿的方法我早就试过了,还是报错,不过同样感谢你哦
老猫的TOM 2008-11-17
  • 打赏
  • 举报
回复
我是点击“删除”按钮
<td width="34" align="left" class="text" style="CURSOR: hand" onClick="openwin('/taskManageAction.do');"> <strong>删除 </strong> </td>
老猫的TOM 2008-11-17
  • 打赏
  • 举报
回复
第49行是:int j=tmf.getSelecteditems().length;
jianpc 2008-11-17
  • 打赏
  • 举报
回复
49行是哪一行?先要确定执行哪句话出错了,才好分析原因。另外,你选中后,是怎么将这个表单提交的?
SmallFishZhang 2008-11-17
  • 打赏
  • 举报
回复
String selectboxs[] = request.getParameterValues("selecteditems");
for (int i = 0; i < selectboxs.length; i++) {
System.out.println(selectboxs[i] );
}
你试一下
老猫的TOM 2008-11-17
  • 打赏
  • 举报
回复
我什么没人帮助我呢,无助的女孩..............

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧