当访问action类出现这个时,原因就是action类里面的属性为null,也就是当前使用的action对象并不是你所想要所配置好的那个action对象。
总结查错步骤:
一、单独使用struts时:
1.检查该action类中的属性名是否与jsp中所对应标签的name值一致。
2.检查该action类中是否有对应属性的setter与getter方法。
二、与spring整合使用时:
1.检查component-scan的base-package是否包含该类以及它属性对应的类,特别是使用通配符时容易出现错误,这个可以自行去网上找通配符的使用规则。同时确定该类以及它属性所对应的类的注解不会被exclude-filter排除。
2.该类中的属性若是通过容器注入时,检查@Resoure与@Atuowired注解的使用是否规范,比如使用@Autowired时是否配有setter方法、使用@Resource时属性名是否与注入bean的id一致,不一致时需要配置一下注入bean的id等,这些使用规则网上都可以找到。类似地,若是没使用注解而只是使用context配置文件时,检查一下该类的bean是否有配置property标签指向该null属性的bean等。
3.检查该action类是否有配置到容器中,是否有通过@Controller等注解或者在context文件中声明创建bean。若是有,检查一下struts配置文件中对应的action是否指向该bean,即class的值是否与该bean的id一致。注意action的class值在单独使用struts时是指向全类名,而当需要从容器注入属性时,class值就需要指向容器中所对应的bean。换种说法就是单独使用struts时,运行的时候是new一个类实例,而与spring整合时,就需要从spring容器中获取配置好的bean。