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

本文记录了解决一个关于页面不显示的bug的过程,该bug源于一个NullPointer异常。问题出现在使用Double类型的属性上,该属性从数据库获取为空值,导致无法进行非空判断。通过调整get和set方法的类型或者改变属性类型解决了这一问题。
摘要由CSDN通过智能技术生成

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最大的难点在于不清楚项目流程,不了解数据来源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值