2011-09-13 18 views
4

我正在使用JSF 2.0和RichFaces 3.3。在我的View用戶將從日曆中獲取日期。使用的標籤是<rich:calendar>。這與backing bean中的Date對象映射。但是這個字段是可選的,因此當用戶沒有選擇日期時,這個特定條目的支持bean getter返回null,這是正確的。如何檢查日期對象的空值

我的問題是我必須將此日期存儲在數據庫中。所以,在儲存之前,我以這種方式類型轉換它:

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); 
} 

但是它在if條件扔NullPointerException。我想在用戶沒有選擇日期時在數據庫中插入null值。我怎樣才能做到這一點?

+0

後的堆棧跟蹤。從它的外觀來看,如果你得到的是零點,如果它只能來自'newProfile',這意味着它沒有被初始化無關。 – Shahzeb

+1

@Shahzeb,它也可能是'newProfile.get(Constants.DETAILS_EXPIRY_DATE_1)'返回一個'null'。 –

+0

true @The。 Ankit post stacktrace也顯示了更多的代碼。 – Shahzeb

回答

-2

嘗試if(newProfile.get(Constants.DETAILS_EXPIRY_DATE_1) == null)

對於字符串,你可以使用equals()方法。而且,在使用equals方法之前,對象需要空檢查以避免NullPointerException。

+1

不僅這個答案是不正確的,而且還有一個upvote - 超現實。 – Shahzeb

+1

是的,這個答案只是可怕的錯誤。 – Bombe

+0

@Vanathi我的問題似乎解決了......我認爲,隨着字符串,日期對象也可以檢查爲空使用.equals方法,這就是爲什麼它失敗intially ... – AngelsandDemons

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); 

    } 
} 
+0

感謝您的回覆......這是我猜的更好的方法..... – AngelsandDemons