这个是我的UserDaoImpl:
    注:Repository所在的包为:import org.springframework.stereotype.Repository;
     @Repository("userDao")
     public class UserDaoImpl implements UserDao {
      @Resource(name="template")
      private HibernateTemplate template;
    }  这个是我的UserServiceImpl:
   @Repository("userService")
   public class UserServiceImpl implements UserService {
      @Resource(name="userDao")
      private UserDao userDao;
  }
  这个是我的Action:
import javax.annotation.Resource;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.jxlg.sence.domain.User;
import org.jxlg.sence.exception.BlogException;
import org.jxlg.sence.service.UserService;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;@Controller @Scope("prototype")
@Action(value="userLogin",results={
@Result(name="success",location="success.jsp",type="redirect"),
@Result(name="failed",location="login.jsp",type="redirect")
})
public class LoginAction extends BlogAction{
private static final long serialVersionUID = 1L;
private User user;
          @Resource(name="userService")
private UserService userService;
    public String login()throws Exception{
     System.out.println(userService);
     boolean flag = userService.login(user);    
         if(flag){
     return "success";
     }
     return "failed";
    }
    public User getUser() {
return user;
}
    public void setUser(User user) {
this.user = user;
}
}
异常为:
java.lang.NullPointerException
org.jxlg.sence.action.LoginAction.login(LoginAction.java:34)
  就是红色的那行:userService为空,为什么没有注入,那里错了,第一次使用标注,请大侠教教

解决方案 »

  1.   

    boolean flag = userService.login(user); userService里有login()类吗?
      

  2.   


    这个是我的UserServiceImpl:
     import javax.annotation.Resource;import org.jxlg.sence.dao.UserDao;
    import org.jxlg.sence.domain.User;
    import org.jxlg.sence.exception.BlogException;
    import org.jxlg.sence.service.UserService;
    import org.springframework.stereotype.Repository;@Repository("userService")
    public class UserServiceImpl implements UserService {
            @Resource(name="userDao")
    private UserDao userDao;
    public User findById(int id) throws BlogException {
    return userDao.findById(id);
    }
    public void save(User user) throws BlogException {
    userDao.save(user);
    } public void update(User user) throws BlogException {
    userDao.upDate(user);
    }
    public boolean login(User user) throws BlogException {
    System.out.println("userDao:"+userDao);
    User u = userDao.findByName(user.getUname());
    if(u!=null&&user.getPword().equals(u.getPword())){
    return true;
    }
    return false;
    }}
      

  3.   

    applicationContext.xml里面没注入?
    还有,没有set方法。
    @Repository("userService"): 这个没有用过,不知道什么意思。
    是否是替代set方法呢?
    只知道action中的userService为空。
    先加个set方法,然后看下applicationContext.xml里面有没有注入
    action注入时,注意是使用name  而不是ID。
      

  4.   


    注解多了是头疼, 我见过人家的写的实体类 JSR303验证注解加上JPA的。 看上去灰茫茫一大片, 很酷的。
    呵呵
      

  5.   

    是不是少了set方法?
    我记得好像是用@component,没用过@Repository
      

  6.   

    @Repository("userService")
    这个错了
    应用@component
      

  7.   

    在你Action中要设置userservince的set 方法
      

  8.   

    不用set方法的
    我已经搞定了 
    使用注解需要在配置文件里面配置启动注解扫描具体为:
    <context:annotation-config/> 
        <context:component-scan base package="org.jxlg.sence.dao.impl,org.jxlg.sence.service.impl"/>
      

  9.   


    呵呵,你没有开启注解,和引入命名空间。  注解我也觉得挺方便的,整个项目下来,XML非常简洁,干净。seter方法都不需要了。