<bean id="userServiceImpl" class="com.gy.service.UserServiceImpl"
abstract="false" lazy-init="default" autowire="default">
</bean>
<bean id="loginAction" class="com.gy.action.LoginAction"
abstract="false" lazy-init="default" autowire="default">
<property name="userService">
<ref bean="userServiceImpl" />
</property>
</bean></beans>
public class LoginAction extends ActionSupport {
private String username; // 用户名
private String password; // 密码
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
public String execute() throws Exception {
if (userService.login(username, password)) { // 判断是否登录
return "success"; // 返回成功字符串
} else {
return "fail"; // 返回失败字符串
}
}
java.lang.NullPointerException
com.gy.action.LoginAction.execute(LoginAction.java:32)省略部分测试代码,应该是spring注入问题,控制台直接读application.xml可以注入,但发布到tomcat userService就成空指针出错 ,请高手赐教!

解决方案 »

  1.   

    你这个是登录,是struts里面的东西。凡是形如:
    public void setUserService(UserService userService) {
    this.userService = userService;
    }都是要从页面获取的信息。跟spring没有关系。
      

  2.   

    他是调用userService.login空指针,你说有关系吗?
      

  3.   

    感觉就是逻辑有问题,当程序跑到execute()这个方法的时候,根本就还没有登录成功吗。怎么在这儿判断啊。当return之后struts还要返回一个视图。这样才算登录成功。
      

  4.   

    晕,就是因为userService spring没注入才会出现null的,和业务逻辑无关
    还有web.xml绝对没问题的,写成java applicatin测试程序通过getbean能得到注入,web发布后就出现空指针了
      

  5.   

    声明的属性做set和get了吗
    还有最好把你的错误报告拿出来
      

  6.   

        有这种情况,你拿的不是注入的 而是NEW的, 所以一直为空
      

  7.   

    很明显说明你action没有交给spring管理,也就是说你访问的不是spring容器里面的action,如果我没猜错的话,绝对是你struts.xml里面配置错误
      

  8.   

    我也觉得你确实Action没有交给Spring管理,可以的话把web.XML贴出来一下
      

  9.   

    username和password写get set方法没?两者的getset方法必须有   从页面得到值的