今天使用Struts2的时候遇到一个怪异的问题,首先在struts.xml中配置的action是没有问题的,Java类也写好了。但是运行的时候报
告如下错误:
javax.servlet.ServletException: Unable to instantiate Action,
cn.edu.cup.actions.JobManager, defined for 'jobList' in namespace
'/'null - action -
file:/K:/Softwares/%E6%95%99%E5%AD%A6%E7%9B%B8%E5%85%B3
经过网上仔细搜索发现,根本原因在于我在方法中使用了 Student s = (Student) session.getAttribute("user");
其中session是在构造函数中获取的。但是,通过分析Struts的原理(参见http://t8500071.javaeye.com/blog
/348057),由于Action先于ActionContext对象实例之前创建,所以session对象是null,因此,会报告空指针错误!
明白了上述原理后,将获取session的语句从构造函数中删除,放到方法中,程序终于正常了!