基本数据类型double和封装类型Double引起的bug

2016年8月9日工作日志

今天遇到一个很坑的bug,测试提交了一个页面不显示的bug,把自己本地项目进行集成测试的时候报了elException.java.lang.Nullpointerexception,于是开始在jsp排查空值。

发现在jsp中${data.bulidArea}为罪魁祸首,开始找solr中的数据,但是solr中是有数据的,页面的数据是从另一个数据库中查出来的,于是开始排查其他可能。

<c:if test="${empty data.buildArea}">
</c:if>

//即使直接调用显示也会报nullpointer
${empty data.buildArea}
//data实体类
public Class data(){
    private Double bulidArea;

    public void setBulidArea(double bulidArea){
        this.bulidArea=bulidArea;
    }
    public double getBulidArea(){
        return this.bulidArea;
    }
}

由于bulidArea为Double封装类型(Double的缺省值为null),但是它的get、set方法都为java基本类型double(double的缺省值为0),从数据库中取出的为空值,最终bulidArea也就无法进行非空判断。

解决方法:1、将get、set方法的double改为Double
2、将变量的类型改为double,此时在页面对变量进行非0验证

备注:解决这个bug最大的难点在于不清楚项目流程,不了解数据来源

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值