我要做的工作是登录后先判断Type字段(int类型),type=0,等待。type=1,通过;type=2,失败
登录后出现错误
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
com.cn.action.JudgeTypeAction.judgeType(JudgeTypeAction.java:28)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.
这是UserDAO类:
****************************************************
/*审核,判断用户审核状态*/
public int judgeType(Integer type){
int i=0;
User user=new User();
try{
session=HibernateUtil.getSession();
String hql="from User as user where user.type=?";
query=session.createQuery(hql);
query.setInteger(0,user.getType());
long l=(Long) query.uniqueResult();
i=(int) l;
return i;
}finally{
if(session!=null)
session.close();
}
}
*********************************************************
这是action类:
JudgeTypeAction.java
package com.cn.action;import com.cn.dao.UserDAO;
import com.cn.vo.User;public class JudgeTypeAction {
private User user;
private Integer type; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}

public Integer getType() {
return type;
} public void setType(Integer type) {
this.type = type;
} public String judgeType(){
UserDAO dao=new UserDAO();
int i = dao.judgeType(user.getType());
if(i==0){
return "shenhewait";
}else if(i==1){
return "shenhepass";
}else
return "shenhefail";
}}

解决方案 »

  1.   

    你试试 底下判断 换成 equals  试试 也许就不报空指针了
      

  2.   

    你页面传过来的是type还是user.type?应该传user.type吧?因为你这里是user.getType():int i = dao.judgeType(user.getType());
      

  3.   


    equals也不行呀还是同样错误……
      

  4.   


    页面传的是user.type可是哪地方有错?应该怎么改呀?
    这是UserDAO类:
    ****************************************************
    /*审核,判断用户审核状态*/
     public int judgeType(Integer type){
     int i=0;
     User user=new User();
     try{
     session=HibernateUtil.getSession();
     String hql="from User as user where user.type=?";
     query=session.createQuery(hql);
     query.setInteger(0,user.getType());
     long l=(Long) query.uniqueResult();
     i=(int) l;
     return i;
     }finally{
     if(session!=null)
     session.close();
     }
     }
    我感觉应该是这个方法有问题,因为在action中做个输出,也是空值
    long l=(Long) query.uniqueResult();
     i=(int) l;
     return i;
    这点不知有错没?由于Object类型不能直接转到int类型,所以中间做了个转换
    求大神指导
      

  5.   

    query.setInteger(0,user.getType());
    这里没写对吧,应该是query.setInteger(0,type);
      

  6.   

    你先打印一下看看你的user是不是为null
      

  7.   


    public int judgeType(Integer type){
     int i=0;
     User user=new User();
     try{
    ......你的User对象是new出来的,user.getType()当然是空的。query.setInteger(0,user.getType());把 new 这行去掉就可以了。 因为你已经写了user 的 get/set方法了,自然可以从页面得到传入的user对象。但是最好在使用前,先判断user是否为空!(严谨性)
      

  8.   

    额,仔细看了一下,你是在dao中声明的 new User。
    这个完全没有必要的。因为你的方法,传入的参数type不就是user.getType()吗?
    干嘛非要执着的使用user.getType(), 直接使用 type 就可以了啊。
    这是UserDAO类:
    ****************************************************/*审核,判断用户审核状态*/
    public int judgeType(Integer type){
      int i=0;
      //User user=new User();  //删掉该行
      try{
        session=HibernateUtil.getSession();
        String hql="from User as user where user.type=?";
        query=session.createQuery(hql);
        query.setInteger(0, type);  //这里,改动一下
        long l=(Long) query.uniqueResult();
        i=(int) l;
        return i;
      }finally{
        if(session!=null)
        session.close();
      }
    }
    dao里面也不做个异常处理......
      

  9.   

    dao改过了,还是不行……怎么回事呀?
    public class JudgeTypeAction {

    private Integer type;

    public Integer getType() {
    return type;
    }
    public void setType(Integer type) {
    this.type = type;
    } public String judgeType(){
    User user=new User();
    int i=0;
    UserDAO dao=new UserDAO();
     i = dao.judgeType(type);
    System.out.print("i值是00000000000000");
    System.out.print("i值是:"+i);
    if(i==0){
    return "shenhewait";
    }else if(i==1){
    return "shenhepass";
    }else
    return "shenhefail";
    }
    我在action中做输出,可是控制台什么都没有……郁闷
      

  10.   


    Action 不用改啊...private User user;public User getUser() {
      return user;
    }
    public void setUser(User user) {
      this.user = user;
    }
    这个最关键的被你删掉了...
    我在楼下给你发一下action的代码。
      

  11.   

    这是action类:
    JudgeTypeAction.java
    package com.cn.action;import com.cn.dao.UserDAO;
    import com.cn.vo.User;public class JudgeTypeAction {
      private User user;  //这是用来与jsp相互传递的。
      //在你的项目里,jsp中应该是<input type="text" name="user.type" value=""> 注意name的写法
      public User getUser() {
        return user;
      }  public void setUser(User user) {
        this.user = user;
      }  public String judgeType(){
        int i = dao.judgeType(user.getType());
        if(i==0){
          return "shenhewait";
        }else if(i==1){
          return "shenhepass";
        }else
          return "shenhefail"; 
        }
      }
    }
      

  12.   

    额,差了一点
      public String judgeType(){
        UserDAO dao=new UserDAO();  //不小心把这行删了
        System.out.println("user : " + user==null);
        System.out.println("user.type" + user.getType()==null);    int i = 0;
        try{
          i = dao.judgeType(user.getType());
        }catch(Exception e){
          e.printStack();
        }    if(i==0){
          return "shenhewait";
        }else if(i==1){
          return "shenhepass";
        }else
          return "shenhefail"; 
        }
      }
      

  13.   


    UserDao 加上异常,看看是否出现异常了。
    /*审核,判断用户审核状态*/
    public int judgeType(Integer type){
      int i=0;
      try{
        session=HibernateUtil.getSession();
        String hql="from User as user where user.type=?";
        query=session.createQuery(hql);
        query.setInteger(0, type);
        long l=(Long) query.uniqueResult();
        i=(int) l;
      }catch(Exception e){
        e.printStackTrace()
      }finally{
        if(session!=null)
        session.close();
      }
      return i;  //这里改动
    }
      

  14.   

    大神,还是不行呀,控制台返回false,您加我QQ把1023056578,我把程序给您,你给看看,纠结两天了……
      

  15.   

    返回两个false就对了啊,说明action正常接收到user.type了......
    后台没有异常信息?
      

  16.   

    int i = dao.judgeType(user.getType());
    这句报空值。不必user.getType();直接 int i = dao.judgeType(type);
    前提你页面要有type值传上来.