我正在使用JSF 2.0和RichFaces 3.3。在我的View中,用户将从日历中查看日期。使用的代码是<rich:calendar>
。这在带有Date
对象的辅助bean中映射。但是,此字段是可选的,因此当用户未选择日期时,此特定条目的辅助bean getter返回null
,这是正确的。
我的问题是我必须将此日期存储在DB中。所以在存储之前我是以这种方式输入它:
if (newProfile.get(Constants.DETAILS_EXPIRY_DATE_1).equals(null)) {
this.cStmt.setDate(15,null);
} else {
java.sql.Date sqlDate = new java.sql.Date(((java.util.Date)newProfile.get(Constants.DETAILS_EXPIRY_DATE_1)).getTime());
this.cStmt.setDate(15,sqlDate);
}
然而,它会在NullPointerException
条件下抛出if
。当用户没有选择日期时,我想在DB中插入null
值。我怎么能这样做?
答案 0 :(得分:5)
如果你想在避免NullPointerException方面更加健壮,
if (newProfile != null) {
Object obj = newProfile.get(Constants.DETAILS_EXPIRY_DATE_1);
if (obj == null) {
this.cStmt.setDate(15, null);
} else {
java.sql.Date sqlDate = new java.sql.Date(((java.util.Date)obj).getTime());
this.cStmt.setDate(15,sqlDate);
}
}
答案 1 :(得分:-2)
尝试if(newProfile.get(Constants.DETAILS_EXPIRY_DATE_1) == null)
对于String,您可以使用equals()方法。此外,在使用equals方法之前,对象需要进行空值检查以避免NullPointerException。