Формат вывода даты в JSF

Если #{myBean.birthdate} относится к типу java.util.Calendar или java.util.Date, могу ли я отформатировать это внутри самого EL, используя, возможно, существующую функцию, с выводом, подобным выходному типу SHORT, MEDIUM, LONG SHORT, MEDIUM, LONG abd FULL?

Вместо того, чтобы выводить полную форму для #{myBean.birthdate}: Среда, 19 января, 19:01:42 WIT 2011, я просто предпочитаю простой вывод 19 января 2011 года.

Должен ли я использовать #{formatBean.format(myBean.birthdate)} вместо этого?


person Albert Gan    schedule 19.01.2011    source источник


Ответы (3)


Используйте <f:convertDateTime>. Вы можете вложить это в любой компонент ввода и вывода. Правила шаблона аналогичны java.text.SimpleDateFormat.

<h:outputText value="#{someBean.dateField}" >
    <f:convertDateTime pattern="dd.MM.yyyy HH:mm" />
</h:outputText>
person jmj    schedule 19.01.2011
comment
life.java - Джигар Джоши Вау, это что-то новое для меня, очень приятно! Спасибо ! А как насчет следующего случая? Я использую простые лица, и значение даты должно быть встроено в значение атрибута. Например, ‹p:panel header=поиск данных для #{myBean.dateField} ... /›. - person Albert Gan; 19.01.2011
comment
@bertie: см. мой ответ ниже и используйте OmniFaces. - person Martin Höller; 16.12.2013
comment
как можно проверить год или месяц, например? - person Vasile Surdu; 04.11.2016

Если вы используете OmniFaces, вы также можете использовать его функции EL, такие как of:formatDate() для форматирования Date объектов. Вы бы использовали это так:

<h:outputText value="#{of:formatDate(someBean.dateField, 'dd.MM.yyyy HH:mm')}" />

Таким образом, вы можете не только использовать его для вывода, но и передавать другим компонентам JSF.

person Martin Höller    schedule 16.12.2013
comment
С подходом OmniFaces он более интуитивно понятен, чем f:convertDateTime. - person Stephan; 31.01.2014

С EL 2 (язык выражений 2) вы можете использовать этот тип конструкции для своего вопроса:

    #{formatBean.format(myBean.birthdate)}

Или вы можете добавить альтернативный геттер в свой bean-компонент, что приведет к

    #{myBean.birthdateString}

где getBirthdateString возвращает правильное текстовое представление. Не забудьте аннотировать метод get как @Transient, если это Entity.

person Corneil du Plessis    schedule 09.07.2011