serviceManager.getUserFirstService().toSpecialShops(citylifeid, bankId, getUser().getId());
   这句报空指针  我该在哪里找错误呢  而且空指针异常  我不会修改    ?

解决方案 »

  1.   

    tid为空 没有参数  
      

  2.   

    我知道   是getuser().getid().的原因  可是我不知道  该怎么修改   我改了以后总是  用户不存在  
      

  3.   

    这用问题都是要判断是否非空的。养成良好的习惯,bug就少了
      

  4.   

    public String execute() throws Exception {
    try {

    /** 组装验签源数据  **/
    StringBuffer sb=new StringBuffer();
    sb.append(citylifeid).append("|").append(citylifename).append("|").append(bankId).append("|").append(sbtId).append("|").append(client).append("|").append(bindNo);

    /** 数据验签  **/
    serviceManager.getTdbcServiceCityLife().checkSign(signMsg, sb.toString());

    /** 获取商户绑定前的临时数据  **/
    Shopbindtemp shopbindtemp = serviceManager.getShopService().getShopBindTemp(sbtId);
    if(null == shopbindtemp){
    this.addActionError("获取商户绑定前的临时数据失败");
    return ERROR;
    }

    if(citylifeid != shopbindtemp.getShop().getId()){
    this.addActionError("银行回传信息的商户ID与绑定临时数据不对应,无法完成绑定");
    return ERROR;
    }

    if(bankId != shopbindtemp.getBank().getId() || bankId != shopbindtemp.getBank().getId()){
    this.addActionError("银行回传信息的银行ID与绑定临时数据不对应,无法完成绑定");
    return ERROR;
    }

    /** 商户绑定账号  赵健编写**/
    serviceManager.getUserFirstService().bindShopsAccount(citylifeid, bankId, bindNo);

    /** 商户申请特约商户 赵健编写 **/
    serviceManager.getUserFirstService().toSpecialShops(citylifeid, bankId, getUser().getId());
    } catch (ServiceException e) {
    this.addActionError(e.getMessage());
    return ERROR;
    }
      

  5.   

    java.lang.NullPointerException
    com.citylife.action.shop.BindBankCallbackAction.execute(BindBankCallbackAction.java:127)
    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:453)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
    com.citylife.action.interceptor.AuthorizationInterceptor.intercept(AuthorizationInterceptor.java:63)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    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:249)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
    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:249)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersI
      

  6.   

    com.citylife.action.shop.BindBankCallbackAction.execute(BindBankCallbackAction.java:127)
    127行,仔细debug下,观察每个对象及其方法返回是否为null
      

  7.   

    com.citylife.action.shop.BindBankCallbackAction.execute(BindBankCallbackAction.java:127)
    你的第127行是serviceManager.getUserFirstService().toSpecialShops(citylifeid, bankId, getUser().getId());
    应该是你的getUser()为null,你的getUser()是怎么得到User的。另外大部分的空指针就像 类.属性/方法 时,类没有实例话,当然不能调用类的属性和方法了。所以就会报空指针异常
      

  8.   

    /** 商户绑定账号  赵健编写**/
    serviceManager.getUserFirstService().bindShopsAccount(citylifeid, bankId, bindNo);/** 商户申请特约商户 赵健编写 **/
    serviceManager.getUserFirstService().toSpecialShops(citylifeid, bankId, getUser().getId());你的这两行代码比较 上一行不错,下一行错了,所以猜测是你的getUser().getId()的getUser()错误或toSpecialShops(x,x,x)内部错误
      

  9.   


    if(getUser().getId() != null && !"".equals("getUser().getId()")) {
                serviceManager.getUserFirstService().
                toSpecialShops(citylifeid, bankId, getUser().getId());
            }
      

  10.   

    public void toSpecialShops(long shopId, long bankId, long userId) throws ServiceException;

    /**
     * 预添加用户首次登录
     * @param user 单点用户
     * @return 本地用户
     * @throws ServiceException 
     */
    User perFirstLogin(BelinkUser user, String key) throws ServiceException;

    /**
     * 登出
     * @param userId 本地用户id
     */
    void logout(long userId);
    }