У меня есть следующие RichFaces (3.3.3):
<rich:calendar id="richCal1"
value="#{user.CreateDate}"
popup="true" mode="client"
inputSize="20"
datePattern="dd/M/yyyy HH:mm"
enableManualInput="true"
buttonIcon="/images/calendar.gif">
<f:convertDateTime type="date" pattern="dd/MM/yyyy HH:mm" />
<a4j:support bypassUpdates="true" event="oninputblur" ajaxSingle="true" />
<a4j:support bypassUpdates="true" event="onchanged" ajaxSingle="true" />
</rich:calendar>
Тип переменной backbean - String, поскольку столбец, в котором отображается календарь, рассчитывается динамически на основе профиля пользователя и может быть одним из многих типов элементов управления (Label, Input, SelectItem, Rich Calendar) ....
Календарь работает при первой загрузке страницы, и корректное значение для RichCal1
извлекается и отображается (в данном случае 05/03/2012 12:00:00
).
Проблема возникает, когда страница нуждается в обновлении (извините за технически некорректное выражение, я попытаюсь объяснить):
На странице есть элемент управления, где пользователь может щелкнуть и настроить свой текущий профиль (дополнительные строки или удалить строки ... и т. Д.). После обновления, чтобы отразить изменение страницы необходимо обновить, где я вижу следующее исключение:
ERROR: org.ajax4jsf.webapp.BaseXMLFilter - Exception in the filter chain
javax.servlet.ServletException: myForm:0:richCal1: 'Mon Mar 05
12:00:00 EST 2012' could not be understood as a date.
Я не понимаю, как Дата превратилась из 05/03/2012 12:00:00
в 'Mon Mar 05 12:00:00 EST 2012
, что является причиной проблемы.
Может кто-нибудь, пожалуйста, просветите меня.
Обновление:
Дальнейшая отладка. Я обнаружил, что когда пользователь обновляет / создает профиль в другом окне, по завершении процесс обновляет родительское окно. Я установил точки останова в установщике / получателе значения Rich: Calendar, и я вижу, что сначала вызывается метод Getter, и он имеет правильно отформатированное значение даты, затем вызывается метод Setter, значение которого устанавливается на Mon Mar 05 12:00:00 EST 2012
, после чего создается исключение ! Кто-нибудь знает, почему это происходит?