web-xml
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <context-param> 
    <param-name>contextConfigLocation </param-name> 
    <param-value>/WEB-INF/classes/applicationContext.xml </param-value> 
    </context-param>
<listener>
   <listener-class> org.springframework.web.context.ContextLoaderListener 
   </listener-class>
</listener>  
 <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>struts-xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>    
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.i18n.encoding" value="GBK"></constant>
   <!--   <constant name="struts.devMode" value="true" />-->
  <package name="do" extends="struts-default" namespace="/" >
      <action name="ListDo" class="List">
       <result name="Doadd">/jsp/addGood.jsp</result>                 
      </action>
  </package>   
</struts>
applicationContext.xml
<!-- BIZ -->
<bean id="goodsBiz"
class="com.sales.biz.GoodsBizImpl">
<property name="goodsDao" ref="goodsDao" />
</bean>
<!-- ACTION -->
<!-- <bean name="/goods" class="com.sales.struts.action.GoodsAction">
<property name="goodsDao" ref="GoodsDao" />
</bean> -->
 <bean id="List" class="com.sales.Action.ListDo" scope="prototype">
  <property name="goodsBiz" ref="goodsBiz" />   Actionpackage com.sales.Action;import java.util.List;
import java.util.Map;import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionSupport;
import com.sales.biz.GoodsBiz;
import com.sales.dao.GoodsDao;
import com.sales.model.Goods;public class ListDo extends ActionSupport implements RequestAware,
SessionAware, ApplicationAware {
  private Goods goods=null;
  GoodsBiz goodsBiz=null;
  private Map<String,Object>application;
  private Map<String ,Object>request;
      private Map<String , Object>session;
public String add()throws Exception{
  System.out.println("进入ACTION");
  System.out.println(goods.getGoodsName());
  System.out.println(goods.getPrice());
  System.out.println(goods.getSaleCount());
  this.goodsBiz.add(goods);
  System.out.println("可以执行这一步!");
List list=this.goodsBiz.search();
System.out.println(list.size());
System.out.println("可以执行第二步!");
request.put("list", list);
System.out.println(request.size());

 System.out.println("可以执行第三部!");
return "Doadd"; 
  }public Goods getGoods() {
return goods;
}
public GoodsBiz getGoodsBiz() {
return goodsBiz;
}public void setApplication(Map<String, Object> arg0) {
// TODO Auto-generated method stub}
  public void setGoods(Goods goods) {
this.goods = goods;
}
 public void setGoodsBiz(GoodsBiz goodsBiz) {
this.goodsBiz = goodsBiz;
} /* public String show() throws Exception{
  System.out.println("可以执行第二部!");
List list=this.goodsBiz.search();
 request.put("list", list);
 return "show";
  
  }*/
public void setRequest(Map<String, Object> arg0) {
// TODO Auto-generated method stub } public void setSession(Map<String, Object> arg0) {
// TODO Auto-generated method stub }}控制台进入ACTION
看了
454.0
45
可以执行这一步!
44
可以执行第二步!
报错java.lang.NullPointerException
com.sales.Action.ListDo.add(ListDo.java:34)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)

解决方案 »

  1.   

    这么看没什么用,你用debug跟踪一下,多打几个断点看看
      

  2.   

    很明显的一个错,空指针异常,ListDo.java:34就这类34行代码,自己找
      

  3.   

    ..打印LIST是NULL(null!=list&&list.size()>0)加个条件
      

  4.   

    空指针
    加个判断 if(null!=xxx)
      

  5.   

    request.put("list", list);  这一句老是 出错 什么原因
      

  6.   

    System.out.println(list.size());
    在控制台 输出是44
      

  7.   

    空指针异常,估计是request对象为空,在第二步之前打印一下request是否为null.
    struts2传参最好是用set/get方法,尽可能的少用内置对象
      

  8.   

    request从哪儿得到的?实例request了吗?
      

  9.   

    我判断了一下 request 却是为空  实现了三个接口RequestAware,
    SessionAware, ApplicationAware  他们不管用?
    public void setRequest(Map<String, Object> arg0) {
    // TODO Auto-generated method stub}
      

  10.   

    private Goods goods=null;
    GoodsBiz goodsBiz=null;貌似使用依赖注入的时候不用给属性浮空值,直接声明就行了,例如:private Goods goods;
      

  11.   

    private Map<String ,Object>request;in method:
            request.put("list", list); 
    request都没实例化,加:request =new HashMap<String ,Object>();
      

  12.   

    这个错很明显,你的request 属性,没有实例化当然包空指针异常!
    需要request 的这个对象new 一下,因为他不是用来封装请求参数。
    struts2不会自动的去创建它。而goods 却不一样。因为你在它是
    用来封装数据的。所以struts2会自动创建它的实例。如果你在提交请求
    时没有用goods.goodName 或者其他的属性来封装属性。那么struts2也不会
    创建goods.