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

来源:互联网 发布:48口网络交换机 编辑:程序博客网 时间:2024/05/17 07:53

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 0
原创粉丝点击