web-dev-qa-db-fra.com

Format Date sortie en JSF

Si #{myBean.birthdate} Est de type Java.util.Calendar Ou Java.util.Date, Puis-je éventuellement le formater à l'intérieur de l'EL lui-même en utilisant une fonction existante, avec le résultat de celui produit par le DateFormat 'SHORT, MEDIUM, LONG abd FULL type de sortie?

Au lieu de sortir le formulaire complet pour le #{myBean.birthdate}: mer. 19 janvier 19:01:42 WIT 2011, je préfère simplement une sortie simple de 19 janvier 2011 =.

Devrais-je utiliser #{formatBean.format(myBean.birthdate)} à la place?

57
bertie

Utilisation <f:convertDateTime> . Vous pouvez l'imbriquer dans n'importe quel composant d'entrée et de sortie. Les règles de modèle sont les mêmes que Java.text.SimpleDateFormat .

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

Si vous utilisez OmniFaces , vous pouvez également utiliser ses fonctions EL comme of:formatDate() pour formater les objets Date. Vous l'utiliseriez comme ceci:

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

De cette façon, vous pouvez non seulement l'utiliser pour la sortie, mais également pour le transmettre à d'autres composants JSF.

25
Martin Höller

Avec EL 2 (Expression Language 2), vous pouvez utiliser ce type de construction pour votre question:

    #{formatBean.format(myBean.birthdate)}

Ou vous pouvez ajouter un autre getter dans votre grain, ce qui entraîne

    #{myBean.birthdateString}

où getBirthdateString renvoie la représentation textuelle appropriée. N'oubliez pas d'annoter la méthode get avec @Transient s'il s'agit d'une entité.

6
Corneil du Plessis