我在项目中用到了quartz定时任务
然后在启动的方法中使用:
ServletContext context = ServletActionContext.getServletContext(); 
List list=(List) context.getAttribute("dictionaryInfo");这个dictionaryInfo是我在listener中set进去的。
 
启动项目,报Caused by: java.lang.NullPointerException
at org.apache.struts2.ServletActionContext.getServletContext(ServletActionContext.java:139)请问这是什么原因造成的,如何解决呢?

解决方案 »

  1.   

    ServletContext context = ServletActionContext.getServletContext();找不到啊
      

  2.   

    quartz在listener set前启动了吧
      

  3.   

    很有可能的一种原因是框架没有调用setServletContext(ServletContext context)方法,
    而这个的原因是Action Class没有实现ServletContextAware接口。而这个注入是由spring拦截器完成的。
    import javax.servlet.ServletContext;
    import org.apache.struts2.util.ServletContextAware;
    import com.opensymphony.xwork2.ActionSupport;
     
    public class CustomerAction 
        extends ActionSupport implements ServletContextAware{
     
    ServletContext context;
     
    public String execute() throws Exception {
     
    return SUCCESS;
     
    }
     
    public void setServletContext(ServletContext context) {
    this.context = context;
    }
    }