2011-01-19 15 views
47

Nếu #{myBean.birthdate}java.util.Calendar hoặc java.util.Date kiểu, tôi có thể có thể định dạng này bên trong EL tự sử dụng một chức năng hiện có lẽ, với sản lượng giống như một trong những sản phẩm của các 's SHORT, MEDIUM, LONGDateFormat abd FULL loại kết xuất?Format ngày đầu ra trong JSF

Thay vì xuất ra dưới dạng hoàn chỉnh cho các #{myBean.birthdate}: Wed 19 tháng 1 19:01:42 WIT 2011, tôi chỉ muốn có một đầu ra đơn giản của 19 tháng 1 năm 2011.

Tôi có nên sử dụng #{formatBean.format(myBean.birthdate)} thay thế không?

Trả lời

131

Sử dụng <f:convertDateTime>. Bạn có thể lồng cái này vào bất kỳ thành phần đầu vào và đầu ra nào. Các quy tắc mẫu giống như java.text.SimpleDateFormat.

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

life.java - Jigar Joshi Wow, đây là điều mới mẻ đối với tôi, rất hay! Cảm ơn bạn ! Nhưng những gì về trường hợp sau đây? Im sử dụng các dấu phẩy và giá trị ngày tháng được nhúng trong giá trị thuộc tính. Ví dụ: . – bertie

+0

@bertie: xem câu trả lời của tôi bên dưới và sử dụng OmniFaces. –

+0

làm cách nào để kiểm tra năm hoặc tháng chẳng hạn? –

6

Với EL 2 (Expression Language 2) bạn có thể sử dụng loại cấu trúc cho câu hỏi của bạn:

#{formatBean.format(myBean.birthdate)} 

Hoặc bạn có thể thêm một getter thay thế trong đậu của bạn dẫn đến

#{myBean.birthdateString} 

nơi getBirthdateString trả về biểu diễn văn bản thích hợp. Hãy nhớ chú thích phương thức get là @Transient nếu nó là một thực thể.

24

Nếu bạn sử dụng OmniFaces, bạn cũng có thể sử dụng các hàm EL của nó như of:formatDate() để định dạng đối tượng Date. Bạn sẽ sử dụng nó như thế này:

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

Bằng cách này bạn không chỉ có thể sử dụng nó cho đầu ra mà còn chuyển nó cho các thành phần JSF khác.

+5

Với phương pháp tiếp cận OmniFaces, nó trực quan hơn 'f: convertDateTime'. – Stephan