2011-09-13 4 views
4

私はJSF 2.0とRichFaces 3.3を使用しています。私のビューでは、カレンダーから日付を取得します。使用されるタグは<rich:calendar>です。これはDateオブジェクトのバッキングBeanにマップされます。ただし、このフィールドはオプションです。したがって、ユーザーが日付を選択しなかった場合、この特定のエントリのバッキングビーンゲッターはnullを返します。Dateオブジェクトの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); 
} 

それはif状態でNullPointerExceptionを投げているが。ユーザーが日付を選択していないときにnullの値をDBに挿入します。これどうやってするの?

+0

ポストスタックトレースになりたい場合。あなたがnullpointを取得しているかどうかを調べることによって、 'newProfile'からのみ可能であるかどうかは、初期化されていないことを意味します。doとは関係ありません。 – 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)を試してみてください、あなたは、等号()メソッドを使用することができます。また、オブジェクトはNullPointerExceptionを回避するためにequalsメソッドを使用する前にヌルチェックが必要です。

+1

この回答は間違っているだけでなく、アップホーテもあります。 – Shahzeb

+1

ええ、この答えはひどく間違っています。 – Bombe

+0

@Vanathi私の問題は解決されているようです...私はStringと一緒に、Dateオブジェクトも.equalsメソッドを使ってnullとしてチェックすることができると仮定しました。それが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

関連する問題