2011-01-19 11 views
47

Jeśli #{myBean.birthdate} jest java.util.Calendar lub java.util.Date typu, mogę ewentualnie sformatować to wewnątrz samego EL wykorzystaniem istniejącej funkcji może, z wyjściem jak ten produkowanego przez DateFormat „s SHORT, MEDIUM, LONG abd FULL typ wyjścia?Format wyjściowy Data w JSF

Zamiast wysyłania kompletny formularz dla #{myBean.birthdate}: Wed Jan 19 19:01:42 2011 WIT, po prostu wolą proste wyjście sty 19, 2011.

powinienem używać #{formatBean.format(myBean.birthdate)} zamiast?

Odpowiedz

131

Zastosowanie <f:convertDateTime>. Możesz zagnieździć to w dowolnym komponencie wejściowym i wyjściowym. Reguły schematów są takie same, jak java.text.SimpleDateFormat.

<h:outputText value="#{someBean.dateField}" > 
    <f:convertDateTime pattern="dd.MM.yyyy HH:mm" /> 
</h:outputText> 
+0

life.java - Jigar Joshi Wow, to jest dla mnie coś nowego, bardzo ładne! Dziękuję Ci ! Ale co z następującym przypadkiem? Im używasz primefaces, a wartość daty ma być osadzona w wartości atrybutu. Na przykład: . – bertie

+0

@bertie: zobacz moją odpowiedź poniżej i użyj OmniFaces. –

+0

jak można na przykład sprawdzić rok lub miesiąc? –

6

Z EL 2 (Expression Language 2) można korzystać z tego typu konstrukcji na swoje pytanie:

#{formatBean.format(myBean.birthdate)} 

Albo można dodać alternatywny getter w fasoli powodując

#{myBean.birthdateString} 

gdzie getBirthdateString zwraca właściwą reprezentację tekstową. Pamiętaj, aby dodawać adnotacje do metody get jako @Transient, jeśli jest to Entity.

24

Jeśli używasz OmniFaces, możesz również użyć jego funkcji EL, takich jak of:formatDate() do formatowania obiektów Date. Można by użyć go w ten sposób:

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

W ten sposób nie można używać go tylko do produkcji, ale również przekazać je do innych komponentów JSF.

+5

Dzięki podejściu OmniFaces jest bardziej intuicyjny niż 'f: convertDateTime'. – Stephan