//异常信息

进来没?
2010-12-16 9:21:09 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:417)
at java.lang.Integer.parseInt(Integer.java:499)
at com.zjl.jc.web.action.ItermAction.delete(ItermAction.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at 
//web层
package com.zjl.jc.web.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;public class ItermAction extends DispatchAction {
private ItermsManager manager;
public void setManager(ItermsManager manager) {
this.manager = manager;
}
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// 两种情况
ItemActionForm f = (ItemActionForm)form;
String id = request.getParameter("id");
Iterms i = null;
if (id == null) {  // 新增的一个物料
i = new Iterms();
}else { // 修改的已有的物料 ,根据id读出来这条记录
i = manager.getIterms(Integer.parseInt(id));
}
i.setCategory(f.getCategory());
i.setItemName(f.getItemName());
i.setPattern(f.getPattern());
i.setSpec(f.getSpec());
manager.save(i);
return list(mapping, form, request, response);
}
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ItemActionForm laf = (ItemActionForm)form;
System.out.println(laf.getSelectFlag());
//String id = request.getParameter("id");
System.out.println("进来没?");
//System.out.println(request.getParameter("id"));
manager.delete(Integer.parseInt(request.getParameter("id")));
return list(mapping, form, request, response);
}
public ActionForward edit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// 得到要修改记录的id值
String id = request.getParameter("id");
ItemActionForm f = (ItemActionForm)form;
// 得到要修改的这条记录 
Iterms i = manager.getIterms(Integer.parseInt(id));
// 对这条记录进行属性的修改,完成后存放到f对象中,各个属性的值来自于这条记录的属性
/*f.set("itermName", i.getItemName());
f.set("spec", i.getSpec());
f.set("pattern", i.getPattern());
f.set("category", i.getCategory());*/
f.setItemName(i.getItemName());
f.setCategory(i.getCategory());
f.setPattern(i.getPattern());
f.setSpec(i.getSpec());
request.setAttribute("id", id);
return mapping.findForward("modify");
}
public ActionForward list(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
List list = manager.getIterms();
request.setAttribute("list", list);
return mapping.findForward("list_success");
}
public ActionForward unspecified(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
return list(mapping, form, request, response);
}
}
//service层接口
package com.zjl.jc.service;
import java.util.List;
import com.zjl.jc.model.Iterms;
public interface ItermsManager {
public void save(Iterms i);
//public Iterms getIterms(String id);
public List getIterms();
public void delete(Integer id);
public Iterms getIterms(Integer id);
public Iterms getIterms(String id);
       //public void delete1(Integer id);}
//hibernate实现类
package com.zjl.iterms.dao.hibernate;
public class ItermsDaoHibernate extends HibernateDaoSupport implements ItermDao {
private ItermDao itermDao;

public ItermDao getItermDao() {
return itermDao;
}
public void setItermDao(ItermDao itermDao) {
this.itermDao = itermDao;
}
@Override
public void delete(Integer id) {
this.getHibernateTemplate().delete(getIterm(id));
}
@Override
public Iterms getIterm(Integer id) {
return this.getHibernateTemplate().get(com.zjl.jc.model.Iterms.class, id);
}
@Override
public List getIterms() {
return this.getHibernateTemplate().find("from Iterms");
}
@Override
public void save(Iterms i) {
this.getHibernateTemplate().saveOrUpdate(i);
}
}
//actionForm
package com.zjl.jc.web.form;
import javax.servlet.http.HttpServletRequest;public class ItemActionForm extends ActionForm {
private static final long serialVersionUID = 1L;
private Integer itemNo;
private String[] selectFlag;
public String[] getSelectFlag() {
return selectFlag;
}
public void setSelectFlag(String[] selectFlag) {
this.selectFlag = selectFlag;
}
public Integer getItemNo() {
return itemNo;
}
public void setItemNo(Integer itemNo) {
this.itemNo = itemNo;
}
private String spec;
private String category;
private String pattern;
private String itemName;
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
return null;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
} public String getSpec() {
return spec;
}
public void setSpec(String spec) {
this.spec = spec;
} public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getPattern() {
return pattern;
}
public void setPattern(String pattern) {
this.pattern = pattern;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
}
//jsp页面
<html>
<head>
<script type="text/javascript">
function addItem() {
window.self.location = "additem.do";
}

function modifyItem() {
var count = 0;
var j = 0;
for (var i = 0; i < document.getElementsByName("selectFlag").length; i++) {
if (document.getElementsByName("selectFlag")[i].checked) {
j = i;
count++;
}
}
if (count == 0) {
alert("请选择需要修改的物料!");
return;
}
if (count > 1) {
alert("一次只能修改一个物料!");
return;
}
if (count == 1) {
window.self.location = "item.do?command=add";
}
}
function deleteItem() {
var flag = false;
for (var i = 0; i < document.getElementsByName("selectFlag").length; i++) {
if (document.getElementsByName("selectFlag")[i].checked) {
flag = true;
alert(flag);
alert(i);
}
}
if (!flag) {
alert("请选择需要删除的物料!");
return;
}
if (window.confirm("确认删除吗?")) {
with (document.getElementById("itemForm")) {

method = "post";
alert(document.getElementById("selectFlag").checked);
action = "iterm.do?command=delete";
submit();
alert("进来没?")
}
}
}
</script>
</head>
<body>
<h3>后台酒水管理系统</h3>
<form name="itemForm" id="itemForm">
<table border="1">
<c:forEach items="${list}" var="item">
    <tr> 
      <td width="35"><input type="checkbox" name="selectFlag" id="selectFlag" value="${item.itemNo }"></td>
      <td width="222">${ item.itemName }</td>
      <td width="195">${ item.spec }</td>
      <td width="293">${ item.pattern }</td>
      <td width="293">${ item.category}</td>
    </tr>
    </c:forEach>
    </table>
   <table width="95%" height="30" border="0" align="center" >
    <tr> 
      <td width="64%"> 
        <input name="btnAdd" type="button" value="增加" id="btnAdd" onclick="addItem();">
        <input name="btnDelete" type="button" value="删除" id="btnDelete"  onclick="deleteItem();">
        <input name="btnModify" type="button" value="修改" id="btnModify"  onclick="modifyItem();">
      </td>
    </tr>
  </table>
  </form>
</html>

//struts-config.xml

<struts-config>
  <form-beans >
    <form-bean name="itermForm" type="com.zjl.jc.web.form.ItemActionForm" />
    <form-bean name="loginForm" type="com.zjl.jc.web.form.LoginForm" />  </form-beans>  <global-exceptions />
  <global-forwards>
   <forward name="index" path="/index.jsp" redirect="true"/>
  </global-forwards>
  <action-mappings >
    <action
      attribute="itermForm"
      name="itermForm"
      parameter="command"
      path="/iterm"
      scope="request"
      type="com.zjl.jc.web.action.ItermAction"
      cancellable="true">
      <forward name="list_success" path="/maint.jsp" />
  
    </action>
    <action path="/additem"
     forward="/item_add.jsp"
     name="itermForm"
    >
    </action>
    <action
      attribute="loginForm"
      name="loginForm"
      path="/login"
      scope="request"
      type="com.zjl.jc.web.action.LoginAction"
      cancellable="true">
      <forward name="error" path="/login_error.jsp" />
      <forward name="success" path="/iterm.do?command=list" />
    </action>

解决方案 »

  1.   

    断点调试啊  你那个东西应该是null值
      

  2.   


     function deleteItem() {
            var flag = false;
            for (var i = 0; i < document.getElementsByName("selectFlag").length; i++) {
                if (document.getElementsByName("selectFlag")[i].checked) {
                    flag = true;
                    alert(flag);
                    alert(i);
                }        
            }
            if (!flag) {
                alert("请选择需要删除的物料!");
                return;
            }
            if (window.confirm("确认删除吗?")) {
                with (document.getElementById("itemForm")) {
                    
                    method = "post";
                    alert(document.getElementById("selectFlag").checked);
                    action = "iterm.do?command=delete";
                    submit();
                    alert("进来没?")
                }
            }
        }

    你的删除 js 怎么没有把要删除的ID传到ACTION
    而且我也没看到你拼接要删除的ID字符串