2011-01-19 948 views
47

Si #{myBean.birthdate} es de java.util.Calendar o java.util.Date tipo, es posible que pueda dar formato a esto dentro de la propia EL usando una función existente tal vez, con la salida como la producida por el DateFormat 's SHORT, MEDIUM, LONG abd FULL tipo de salida?formato de la fecha de salida en JSF

En lugar de mostrar el formulario completo para la #{myBean.birthdate}: Mar Ene 19 de 2011 19:01:42 WIT, yo prefiero una salida sencilla de Ene 19 de, 2011.

¿Debo usar #{formatBean.format(myBean.birthdate)} en su lugar?

Respuesta

131

Use <f:convertDateTime>. Puede anidar esto en cualquier componente de entrada y salida. Las reglas de patrón son las mismas que java.text.SimpleDateFormat.

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

life.java - Jigar Joshi ¡Guau, esto es algo nuevo para mí, muy agradable! Gracias ! ¿Pero qué pasa con este siguiente caso? Estoy usando Primefaces, y el valor de la fecha debe ser incrustado en el valor del atributo. Por ejemplo, . – bertie

+0

@bertie: vea mi respuesta a continuación y use OmniFaces. –

+0

¿cómo es posible verificar el año o el mes, por ejemplo? –

6

Con EL 2 (lenguaje de expresión 2) puede utilizar este tipo de construcción de tu pregunta:

#{formatBean.format(myBean.birthdate)} 

O puede agregar un captador alternativo en el bean que resulta en

#{myBean.birthdateString} 

donde getBirthdateString devuelve la representación de texto adecuada. Recuerde anotar el método get como @Transient si se trata de una entidad.

24

Si usa OmniFaces también puede usar sus funciones EL como of:formatDate() para formatear objetos Date. Se podría utilizar de esta manera:

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

De esta manera no sólo se puede utilizar para la salida, sino también para transmitirla a otros componentes JSF.

+5

Con el enfoque de OmniFaces es más intuitivo que el 'f: convertDateTime'. – Stephan