Подтвердить что ты не робот

Формат вывода даты в 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)}?

4b9b3361

Ответ 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.