web-dev-qa-db-de.com

Format Datumsausgabe in JSF

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?

57
bertie

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>
153
Jigar Joshi

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.

25
Martin Höller

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.

6