Wenn #{myBean.birthdate}
Vom Typ Java.util.Calendar
Oder Java.util.Date
Ist, kann ich dies möglicherweise in der EL selbst unter Verwendung einer vorhandenen Funktion formatieren, wobei die Ausgabe der von DateFormat
ist der Ausgabetyp SHORT
, MEDIUM
, LONG
und FULL
?
Anstatt das vollständige Formular für #{myBean.birthdate}
: Mi, 19. Januar, 19:01:42 WIT 2011 auszugeben, bevorzuge ich eine einfache Ausgabe von 19. Januar 2011 =.
Soll ich stattdessen #{formatBean.format(myBean.birthdate)}
verwenden?
Verwenden <f:convertDateTime>
. Sie können dies in jeder Eingabe- und Ausgabekomponente verschachteln. Musterregeln sind die gleichen wie Java.text.SimpleDateFormat
.
<h:outputText value="#{someBean.dateField}" >
<f:convertDateTime pattern="dd.MM.yyyy HH:mm" />
</h:outputText>
Wenn Sie OmniFaces verwenden, können Sie auch EL-Funktionen wie of:formatDate()
verwenden, um Date
Objekte zu formatieren. Du würdest es so benutzen:
<h:outputText value="#{of:formatDate(someBean.dateField, 'dd.MM.yyyy HH:mm')}" />
Auf diese Weise können Sie es nicht nur für die Ausgabe verwenden, sondern auch an andere JSF-Komponenten weitergeben.
Mit EL 2 (Expression Language 2) können Sie diese Art von Konstrukt für Ihre Frage verwenden:
#{formatBean.format(myBean.birthdate)}
Oder Sie können einen alternativen Getter in Ihre Bohne einfügen, was dazu führt
#{myBean.birthdateString}
dabei gibt getBirthdateString die richtige Textdarstellung zurück. Denken Sie daran, die get-Methode mit @Transient zu versehen, wenn es sich um eine Entität handelt.