java date为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java date为空相关的知识,希望对你有一定的参考价值。

mysql 数据库中 有一个时间字段date 设置允许为空 如该字段为空 当读取到这个字段时 总是报空指针异常 怎么回事 改如何处理 我是想如果为空 直接就是空置 前台页面不显示就行了

是前台显示的时候错误还是在后台读取数据库的时候就错了?是不是在前/后台哪里用到了date,如果数据库里面为空,前后台又没有用到date的话(比如用date.xxx),是不会报错的追问

在service层用到这个字段了 我需要将数据库中的数据全部读取出来 在前台页面展示出来 我是把数据库的信息放到一个VO里,vo在set(get.date())这个字段时报空指针异常

追答

vo.setDate(xxx.getDate()) 这样就报错?你确定vo和xxx都不为空?只有里面的getDate()才为空?

追问

vo是new出来的 如下
Teacher t = new Teacher();//实体PO 里面有一个存储Date 类型的字段 当前为空
uservo u = new uservo();//将实体中数据设置到该vo date字段里
vo.setDate(t.getDate().toString);

这样就报异常了

追答

我晕 这样肯定会报啊。你用t.getDate().toString()这样不行,你的考虑t.getDate为null的情况,因为null是没有.toString()的啊,所以你在toString()之前应该判断一下t.getDate()是否为null,相信到此你应该明白了

参考资料:IT氧吧

参考技术A 在前台或者后台先判断一下date==null?"":date,在使用不就可以了吗? 参考技术B 你用的是hibernate吗? 如果是的 如果你确定vo.setDate(xxx.getDate()) 就报异常了
那么有一个可能 就是你的实体类中有设置date这个字段不能为空
我遇到过这个原因 其他的就不知道了

希望能帮到你追问

我知道问题出在哪了 是因为 我在vo里设置的时间类型是String类型 当Date 为null 时,
用Date().toString 转换的时候出的异常,也就是说 null.toString 报的异常 不为null是没问题 现在的问题是如何将Date转化为String 要考虑到null 的情况

参考技术C 那就在jsp页面进行判断,如果为空就输出空不就OK了?

java将数据转换成json时,日期类型为空时报错, 我不想让报错 ,为空时 就直接转为空

JSONArray olist = JSONArray.fromObject(queueList);
是不是这样写也有问题

应该是日期有null值,2个方法,
第一个你自己处理queueList,把日期数据进行为空处理。date == null ? "":date

第二个方法,你重写fromObject方法,处理null的情况。
参考技术A 你应该提供一个方法对于某些特殊的值做处理,根据需求来,如date,bigdecimal,double,null等 最好都去想想要做什么样的处理, 参考技术B 要用JSONArray 肯定要处理queueList 把date类型转成string 参考技术C 直接JSONArray olist = new JSONArray(queueList); 参考技术D gson好用

String olist = new Gson().toJson(queueList);

以上是关于java date为空的主要内容,如果未能解决你的问题,请参考以下文章

java判断字符串是不是为空

java date为空

使用脚本选项及组合条件测试

PHPActiveRecord validates

java将数据转换成json时,日期类型为空时报错, 我不想让报错 ,为空时 就直接转为空

php判断mysql数据库是不是为空