Метка времени конвертера JSF - PullRequest
4 голосов
/ 09 января 2011

Я хочу преобразовать свой ввод в значение метки времени.

Я нашел преобразователь даты только в примерах.Есть ли лучшие практики?

Спасибо


Обновление:

Я хочу сохранить день рождения пользователя, но мой бэкэнд требует значения метки времени.И у меня проблемы с привязкой к моему интерфейсу jsf ..

Может быть, ссылка на пример будет полезной: -)

Я попробовал это следующим образом:

public void setBday(Date bday) {
            member.setBirthday(new Timestamp(bday.getTime()));
        }
        public Timestamp getBday() {
            return member.getBirthday();
        }

Но я получаю исключения (странно):

/createMember.xhtml @34,54 value="#{member.bday}": Cannot convert 13.01.83 01:00 of type class java.util.Date to class java.sql.Timestamp

(Возможно, из-за метода get?)

1 Ответ

5 голосов
/ 09 января 2011

Привязать к Date#getTime() вместо этого, чтобы получить / установить необработанную временную метку в миллисекундах.

<h:inputText value="#{bean.date.time}" />

Или, если вы хотите ввести / вывести удобочитаемую дату, просто придерживайтесь #{bean.date} и используйте стандартные преобразователи даты.

<h:inputText value="#{bean.date}">
    <f:convertDateTime type="date" dateType="short" />
</h:inputText>

В серверной части просто используйте Date#getTime() для обработки метки времени.


Обновление : вы не должны загромождать свою модель специфичным для JDBC API. java.util.Date представляет метку времени. Используйте java.sql.Timestamp только в тот момент, когда вы собираетесь сохранить java.util.Date в столбце TIMESTAMP или DATETIME вашей БД.

preparedStatement.setTimestamp(index, new Timestamp(bean.getDate().getTime()));
...