空指针错误

堕落的唐僧 2014-11-12 06:23:05
页面上订购成功返回后报空指针错误,鉴权的代码大致如下
<% User user = (User)session.getAttribute("user");
String spid ="02112345";
String userToken = (String)session.getAttribute("UserToken");
VasServiceSoapLocator vsl = new VasServiceSoapLocator();
VasServiceSoapImpl vsi = vsl.getVasServiceSoapImpl();
VasProductSubResponseVO vsr = vsi.userSubedProducts(new VasProductSubRequestVO(spid,user.getUserId(),userToken));
Object[] obj = vsr.getProducts(); //这一行报空指针
request.getSession().setAttribute("buy", false);
if (obj !=null){
for(int i =0 ; i<obj.length;i++){
VasProductDetailResponseVO vo = (VasProductDetailResponseVO)obj[i];
String Buy = vo.getProductID();
if("1000701234".equals(Buy)){
System.out.println("flag true");
request.getSession().setAttribute("buy", true);
break;
}
}
}
%>
不订购的时候访问都能正常的鉴权,不知道是什么原因,大神帮忙看看。。
...全文
179 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
堕落的唐僧 2014-11-14
  • 打赏
  • 举报
回复
userToken订购时没传过去,所以返回为空报错了,已经解决了
missMeyo 2014-11-14
  • 打赏
  • 举报
回复
很明显vsr空值了。
anthow 2014-11-13
  • 打赏
  • 举报
回复
VasProductSubResponseVO vsr = vsi.userSubedProducts(new VasProductSubRequestVO(spid,user.getUserId(),userToken)); 可能这里面的vsr尾空吧 不知道源码,不好回答
u012563086 2014-11-13
  • 打赏
  • 举报
回复
还好,回复赚积分吧
  • 打赏
  • 举报
回复
VasProductSubResponseVO vsr = vsi.userSubedProducts(new VasProductSubRequestVO(spid,user.getUserId(),userToken)); 这个vsr对象为空了 你看看有没有获取到值
qq_17390259 2014-11-13
  • 打赏
  • 举报
回复
这段代码我猜,是拿了一个唯一标识spid,用户,和userToken标识。然后获取一笔订单。 一般来讲user是从session中拿的不会为空,userToken是防止重复提交的不用管。你看看数据库,spid有没有。 VasProductSubResponseVO vsr=vsi.userSubedProducts(newVasProductSubRequestVO(spid,user.getUserId(),userToken)); 你不要着急拿vsr对象的值,你先判断是否为null。不为null在往下面执行。就不报错了。 if(vsr!=null){ Object[] obj = vsr.getProducts(); //这一行报空指针 request.getSession().setAttribute("buy", false); if (obj !=null){ for(int i =0 ; i<obj.length;i++){ VasProductDetailResponseVO vo = (VasProductDetailResponseVO)obj[i]; String Buy = vo.getProductID(); if("1000701234".equals(Buy)){ System.out.println("flag true"); request.getSession().setAttribute("buy", true); break; }
多木多多木 2014-11-13
  • 打赏
  • 举报
回复
哥们,这个很可能是在你注释信息的上一行有了空对象,使用浏览器控制台跟踪下,或者是将你写的这些对象在界面上做一个输出看看。只有这些代码确实不好确定问题。
meng020712 2014-11-13
  • 打赏
  • 举报
回复
Object[] obj = vsr.getProducts(); //你说这行这一行报空指针 那你这个方法中返回的就是空、是怎么返回的是、 你看下、让它返回是数组对象呢、
姜小白- 2014-11-12
  • 打赏
  • 举报
回复
new VasProductSubRequestVO(spid,user.getUserId(),userToken) new出来的对象是什么呢? vsi.userSubedProducts( 上面new的对象 ) 方法返回的结果为null了吧? 看想返回什么值,检查下逻辑

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧