Формат вывода даты в JSF
Если #{myBean.birthdate}
имеет тип java.util.Calendar
или java.util.Date
, могу ли я отформатировать его внутри самого EL, используя существующую функцию, возможно, с выходом, подобным тому, который был создан с помощью DateFormat
SHORT
, MEDIUM
, LONG
abd FULL
тип вывода?
Вместо вывода полной формы для #{myBean.birthdate}
: Wed 19 января 19:01:42 WIT 2011, я просто предпочитаю простой вывод 19 января 2011 г..
Следует ли вместо этого использовать #{formatBean.format(myBean.birthdate)}
?
Ответы
Ответ 1
Используйте <f:convertDateTime>
. Вы можете вложить его в любой компонент ввода и вывода. Правила шаблонов такие же, как java.text.SimpleDateFormat
.
<h:outputText value="#{someBean.dateField}" >
<f:convertDateTime pattern="dd.MM.yyyy HH:mm" />
</h:outputText>
Ответ 2
Если вы используете OmniFaces, вы также можете использовать его для EL-функций, таких как of:formatDate()
для форматирования Date
объектов. Вы бы использовали его следующим образом:
<h:outputText value="#{of:formatDate(someBean.dateField, 'dd.MM.yyyy HH:mm')}" />
Таким образом вы можете не только использовать его для вывода, но и передать его другим компонентам JSF.
Ответ 3
С EL 2 (язык выражений 2) вы можете использовать этот тип конструкции для своего вопроса:
#{formatBean.format(myBean.birthdate)}
Или вы можете добавить альтернативный получатель в bean, в результате получив
#{myBean.birthdateString}
где getBirthdateString возвращает правильное текстовое представление. Не забудьте аннотировать метод get как @Transient, если это Entity.