Java中判断Cassandra存储的Timestamp空值失败问题求助
问题分析与解决方案
你的核心问题出在调用toString()的时机错误——如果session.getAttribute("deliveryDate")本身就是null,执行toString()的时候会直接抛出NullPointerException,根本走不到后面的null判断逻辑,这就是你的if条件看似“不生效”的原因。
修正后的代码
先判断属性是否为null,再调用toString():
Object deliveryDateObj = session.getAttribute("deliveryDate"); if(deliveryDateObj != null){ String delidate = deliveryDateObj.toString(); ///////////////date convertion///////////////// long unixSecondsfrom = Long.parseLong(delidate); Date datefrom = new java.util.Date(unixSecondsfrom); SimpleDateFormat sdffrom = new java.text.SimpleDateFormat("yyyy-MM-dd"); String formattedFromDate = sdffrom.format(datefrom); ///////////////date convertion///////////////// page.set("deliveryDate", formattedFromDate); }else{ page.set("deliveryDate", ""); }
额外优化建议
- 如果存在
deliveryDate不为null,但转换为字符串后是空值的情况,可以补充空字符串判断:
if(deliveryDateObj != null && !deliveryDateObj.toString().trim().isEmpty()){ // 你的日期转换逻辑 }else{ page.set("deliveryDate", ""); }
- 注意
SimpleDateFormat是线程不安全的,在Web这类多线程环境中,建议每次创建新实例,或者改用Java 8+提供的线程安全类DateTimeFormatter来处理日期格式化。
内容的提问来源于stack exchange,提问作者Boopathi D
相关产品推荐
相关产品推荐

