一、异常见下:
Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.iwtxokhtd.action.CreateOrderItemAction.execute(CreateOrderItemAction.java:47)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
二、控制器代码如下:
/**
 * 
 */
package com.iwtxokhtd.action;import java.util.Date;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;import com.iwtxokhtd.dao.CreateOrderItemDao;
import com.iwtxokhtd.form.OrderItemBeanForm;/**
 * @author iwtxokhtd
 *
 */
public class CreateOrderItemAction extends Action{ //航班日程安排dao
private CreateOrderItemDao itemdao; @Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
//错误消息对象
ActionMessages errors=new ActionMessages();


//从模型中获取数据
String id=(String)((OrderItemBeanForm)form).getId();
String year=(String)((OrderItemBeanForm)form).getYear();
String month=(String)((OrderItemBeanForm)form).getMonth();
String day=(String)((OrderItemBeanForm)form).getDay();
  
//转换字符格式

  id=new String(id.getBytes("ISO-8859-1"),"gb2312");
  year=new String(year.getBytes("ISO-8859-1"),"gb2312");
      month=new String(month.getBytes("ISO-8859-1"),"gb2312");
      day=new String(day.getBytes("ISO-8859-1"),"gb2312");
  Long lid=new Long(Long.parseLong(id));
          Date date=new Date(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day));
           //若id,year,month,day为空,则报错
     if(id==null||year==null||month==null||day==null)
     {
     errors.add("fail_1",new ActionMessage("CreateOrderItemAction.c"));
     saveErrors(request,errors);
     return mapping.getInputForward();
     }


//保存新的航班日程安排
if(!itemdao.CreateOrderItem(lid, date))
{
errors.add("fail_2", new ActionMessage("CreateOrderItemAction.a"));
saveErrors(request,errors);

}
else
{
errors.add("succeed_1",new ActionMessage("CreateOrderItemAction.b"));
saveErrors(request,errors);
}

return mapping.findForward("createok");


}
public CreateOrderItemDao getItemdao() {
return itemdao;
} public void setItemdao(CreateOrderItemDao itemdao) {
this.itemdao = itemdao;
}
}

解决方案 »

  1.   

    String id=(String)((OrderItemBeanForm)form).getId(); 
    String year=(String)((OrderItemBeanForm)form).getYear(); 
    String month=(String)((OrderItemBeanForm)form).getMonth(); 
    String day=(String)((OrderItemBeanForm)form).getDay();你的上面几相中有空值所有你在下面调用getBytes("ISO-8859-1")的时候空指针因为null.getBytes("ISO-8859-1")抛出异常.
      

  2.   

    我也知道id,year,month,day取到的是null值,但从运行的JSP页面中对应的项中却是是有数据,就是数据库中对应的表没有数据,所以怎么使得这几项中有数据,这给的代码不全,单从这两个中都可以看出这个问题,我刚发了个完全的代码在同名的新贴中,望楼上的耐心地帮去看看
      

  3.   

    替换你的代码,这样就应该没问题了。OrderItemBeanForm oifrom = (OrderItemBeanForm)form;String id = org.apache.commons.lang.StringUtils.defaultString(oifrom.getId());  
    String yearorg.apache.commons.lang.StringUtils.defaultString(oifrom.getYear();  
    String month=org.apache.commons.lang.StringUtils.defaultString(oifrom.getMonth());  
    String day=org.apache.commons.lang.StringUtils.defaultString(oifrom.getDay()); 
      

  4.   

    楼上的兄弟,还是有问题:
    在这两行 --Long lid=new Long(Long.parseLong(id)); 
              Date date=new Date(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day)); 出现如下异常:
    java.lang.NumberFormatException: For input string: ""
    java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    java.lang.Long.parseLong(Long.java:424)
    java.lang.Long.parseLong(Long.java:461)
    com.iwtxokhtd.action.CreateOrderItemAction.execute(CreateOrderItemAction.java:53)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      

  5.   


    你先判断一下然后再用
    Date  date=new Date(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day)); 
    例如:
    Date  date= new Date();
    if(!"".equals(year)&&!"".equals(month)&&!"".equals(day)){
      date=new Date(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day)); 
    }就好啦o(∩_∩)o...