Action
----------------------------------------------------------------
public ActionForward register(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{ UserForm userForm = (UserForm) form;
User user = null;
String ccode = (String) request.getSession().getAttribute("ccode");
String checkcode = userForm.getCcode();
try
{
if (ccode.equals(checkcode))
{
user = this.userDao.findUserByUserName(userForm.getUserid());
if (user == null)
{
user = new User(userForm.getUserid(),
userForm.getUserpwd(), userForm.getUserques(),
userForm.getUserans(), userForm.getUsermail(),
userForm.getIntegral(), userForm.getGrade(),
userForm.getSex(), userForm.getRealname());
this.userDao.register(user);
request.setAttribute("userid", userForm.getUserid());
request.setAttribute("grade", userForm.getGrade());
return mapping.findForward("registersuccess");
} else
{
ActionMessages errors = new ActionMessages();
errors.add("exist", new ActionMessage("user.userid.exist"));
super.saveMessages(request, errors);
return mapping.getInputForward();
}
} else
{
ActionMessages errors = new ActionMessages();
errors.add("checkcode", new ActionMessage("user.ccode.error"));
super.saveErrors(request, errors);
return mapping.getInputForward();
}
} catch (Exception e)
{
e.printStackTrace();
return mapping.findForward("registererror");
}
}
----------------------------------------------------------------
IUserDaoImpl
----------------------------------------------------------------
public User findUserByUserName(String username) throws Exception
{
User user=null;
Query q =super.getSession().createQuery("from User as u where u.userid=?");
q.setString(0, username);
List<User> list = q.list();
if(list.size()>0)
{
user = list.get(0);
}
return user;
}
----------------------------------------------------------------
报出的错误 
user = this.userDao.findUserByUserName(userForm.getUserid()); 为空指针异常求解,那里出了问题

解决方案 »

  1.   

    这句中可能是Null的变量有:
    userDao
    userForm
    其中userDao为Null的可能性要大一些。
    注入不成功?
      

  2.   

    applicationContext.xml
    --------------------------------------------------------------------
            <bean id="userDao" class="com.adam.mldn.struts.dao.impl.IUserDaoImpl">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <bean name="/register" class="com.adam.mldn.struts.action.UserAction">
    <property name="userDao" ref="userDao"></property>
    </bean>
    --------------------------------------------------------------------
      

  3.   


    如果是userDao为null 那应该如何做呢?
      

  4.   

    ContextLoaderPlugIn配了没有?
    DelegatingRequestProcessor 配了没有?
    setUserDao方法实现了没有?
      

  5.   

    ContextLoaderPlugIn使用的ContextLoaderListenersetuserDao方法的实现指的是什么?
      

  6.   

    往UserAction中注入userDao必须要UserAction类中有实现setUserDao方法。
      

  7.   

    ContextLoaderPlugIn是在Struts-config.xml文件中配的。
      

  8.   

    参见
    http://www.ibm.com/developerworks/java/library/j-sr2/index.html
      

  9.   

    查看struts配置
    DelegatingRequestProcessor 配了没有
      

  10.   

    1楼的哥们说的差不多了你debug一下,看看具体是哪个为null不就出来了,再想想为啥是null然后解决掉了
      

  11.   

    像这种空指针异常的话,代码跟踪一下(debug)就查出来那个值没获取到了嘛,呵呵
      

  12.   

    this.userDao.findUserByUserName(userForm.getUserid());  userDao可能性null很大