Как проверить нулевое значение для объекта Date - PullRequest
4 голосов
/ 13 сентября 2011

Я использую JSF 2.0 и RichFaces 3.3.В моем представлении пользователь будет отображать дату из календаря.Используется тег <rich:calendar>.Это отображается в компоненте поддержки с Date объектом.Однако это поле является необязательным, и поэтому, когда пользователь не выбирает дату, получатель вспомогательного компонента для этой конкретной записи возвращает 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);
}

Однако он выбрасывает NullPointerException в состоянии if.Я хочу вставить значение null в БД, когда пользователь не выбирает дату.Как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 13 сентября 2011

Если вы хотите быть более надежным во избежание исключения 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 голосов
/ 13 сентября 2011

Попробуйте if(newProfile.get(Constants.DETAILS_EXPIRY_DATE_1) == null)

Для String вы можете использовать метод equals (). Кроме того, объекты должны проверяться нулем перед использованием метода equals, чтобы избежать исключения NullPointerException.

...