form里面的代码:
public class ListForm extends ActionForm {

private YxSales sales=new YxSales(); public YxSales getSales() {
return sales;
} public void setSales(YxSales sales) {
System.out.println(sales);
this.sales = sales;
}

action里面:
public class ListAction extends Action {

private ListBiz listbiz;

public void setListbiz(ListBiz listbiz) {
this.listbiz = listbiz;
} public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response){
ListForm listform=(ListForm)form;
                  YxSales sales=listform.getSales();//指这里出错
return null;
}}
//错误
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at org.crm.struts.action.ListAction.execute(ListAction.java:31)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
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:228)
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:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

    listform 是空的,你看你的struts配置文件里面有没有配置from 还有action的配置中有没有指定name属性
      

  2.   

    在页面里面:比如一个机会来源:
    <th>机会来源</th>
    <td>
    <input name="sales.laiyuan" /></td>laiyuan是YxSales实体类里面的属性的这样我以前做过是可以的
      

  3.   

    sales这个变量楼主已经在form里给实例化了,因此比较有可能的是楼主把配置文件写错了(此action对应的form的全限定路径写错),action中execute方法获得的form对象为空。不过挺奇怪的,如果是form实例为null,那么应该在ListForm listform=(ListForm)form; 这一步就会出错。
      

  4.   

    nullpoint错误就去找出错的哪行
    然后设断点查看
      

  5.   

    说你的form是空的,楼主说啥呢你看看你的struts-config,有没有把action和form关联好
      

  6.   

    <form-beans id="listform" type="org.crm.struts.form.ListForm" />
      <action-mappings>
       <action attribute="listform"
       path="/addlist"
       name="listform"
                       input="/addlist.jsp"
       type="org.springframework.web.struts.DelegatingActionProxy">
       <forward name="list" path="/list.jsp"></forward>   
       </action>
      </action-mappings>配置文件这样应该没错吧ListForm listform=(ListForm)form;这一步他也没报错。报错的就是listform.getSales();这里
    一取值就出错,如果这句话不要,上面的就不出错的
      

  7.   

    晕死,纠正一下,对值为null的对象引用进行强制类型转换居然不会出异常!我真是火星了,为何java编译器可以放过这个问题?之前我还在考虑出现这种情况该报空指针异常还是转型异常来着
      

  8.   


    String str = (String)null;//OK
      

  9.   

    我也知道form里面是空的啊 ,该怎么解决啊
      

  10.   

    ListForm listform=(ListForm)form; 这就是空的
      

  11.   

    jsp页面提交的地方form 中有无指定 name="listform"
      

  12.   

    at org.crm.struts.action.ListAction.execute(ListAction.java:31) 
    at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106) 楼主的execute方法错误(貌似少了一个response参数),不能被Struts代理(DelegatingActionProxy)。execute最好标上@Override,这样在编译期就会检查。
      

  13.   

    抱歉!看错了,方法签名是正确的。xml配置可能不对:
    <form-beans id="listform" type="org.crm.struts.form.ListForm" /> 
    form-beans是一个组,
    <form-beans>
    //这里写form-bean
    <form-bean id="listform" type="org.crm.struts.form.ListForm" /> 
    </form-beans>
      

  14.   

    YxSales 需要自己定义一个类型转化器吧
      

  15.   


    <form-beans id="listform" type="org.crm.struts.form.ListForm" />
    form-beans多了个s,应该去掉s后放在<form-beans>内部
      

  16.   

    集成了spring哦,说实话以前集成spring还没这样用过,问题会不会出现在这里
      

  17.   

    刚才试了下,集成了spring用form没有问题
      

  18.   

    你的配置文件写错了,改成 
    <form-beans>
        <form-bean name="listform" type="org.crm.struts.form.ListForm" /> 
        </form-beans>
      

  19.   

    <form-beans id="listform" type="org.crm.struts.form.ListForm" /> 
    没这样用过
      

  20.   

    Debug一下就可以找到哪里错啦~~~
      

  21.   

    YxSales sales=(YxSales)listform.getSales();
      

  22.   

    很简单的配置你给搞错了啊 
    <form-beans> 
        <form-bean name="listform" type="org.crm.struts.form.ListForm" /> 
    </form-beans>
      

  23.   

    private YxSales sales=new YxSales(); public YxSales getSales() { 
    return sales; 
    } sales是null!!
      

  24.   

    空的吧。。没有获取到你的listform
      

  25.   

    可能是application.xml里没有配置注入代码