45 votes

Afficher la date du jour sur une page JSF

Est-il possible d'afficher la date du jour (today's) en JSF sans utiliser de backing bean ?

J'ai le code suivant, mais il n'a pas fonctionné.

<div class="leftSide">Today's date #{currentDate}</div>

ou

<f:facet name="header">  
<h:outputText value="Today's date" />  
</f:facet>
<h:outputText value="#currentDate">
    <f:convertDateTime pattern="MM/dd/yyyy" type="date" />
</h:outputText>

101voto

BalusC Points 498232

Vous pouvez enregistrer une instance de java.util.Date comme un bean à portée de requête dans faces-config.xml .

<managed-bean>
    <managed-bean-name>currentDate</managed-bean-name>
    <managed-bean-class>java.util.Date</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

De cette façon, il est disponible en tant que #{currentDate} sans avoir besoin d'une classe de haricot de soutien personnalisée.


Mise à jour : la bibliothèque utilitaire JSF OmniFaces a un tel haricot déjà enregistré comme #{now} . Si vous utilisez déjà OmniFaces, vous pouvez donc l'utiliser directement.

<h:outputText value="#{now}">
    <f:convertDateTime pattern="MM/dd/yyyy" type="date" />
</h:outputText>

33voto

Matt Handy Points 19128

En JSF, vous pourriez utiliser l'objet implicite EL session qui donne accès à l'actuel HttpSession . En HttpSession#getLastAccessedTime temps ...

... renvoie la dernière fois que le client a envoyé une requête associée à cette session, sous la forme du nombre de millisecondes depuis minuit le 1er janvier 1970 GMT, et marqué par l'heure à laquelle le conteneur a reçu la demande.

Vous pouvez donc utiliser le code suivant dans votre facette :

<h:outputText value="#{session.lastAccessedTime}">
      <f:convertDateTime pattern="MM/dd/yyyy" type="date" />
</h:outputText>

Il s'agit de l'heure du serveur et elle peut différer de l'heure du client en fonction des différents fuseaux horaires.

Mais vous pouvez également utiliser une solution javascript, comme indiqué ici :

Comment obtenir la date du jour en JavaScript ?

8voto

jpramondon Points 41

Ou vous pouvez le faire en utilisant des Omnifaces. Je suis surpris que BalusC ne vous ait pas parlé de cette solution (je pense qu'il est un grand contributeur d'Omnifaces). C'est peut-être parce que l'utilisation d'Omnifaces pour afficher une simple date dans une page pourrait être une surcharge pour certains.

Quoi qu'il en soit, si votre projet utilise déjà Omnifaces Dans le cadre de la gestion de l'environnement, il y a 2 beans gérés exposés par défaut et un en particulier que vous pouvez trouver pratique. Conformément à la documentation des balises précise, une fois Omnifaces ajouté à votre projet, vous pouvez utiliser la fonction #{now} haricot géré.

Par exemple, pour définir la date maximale d'un calendrier Primefaces, j'ai simplement écrit ce qui suit :

    <p:calendar id="myCalendar" pattern="dd/MM/yyyy" 
                value="#{mybean.myDate}" maxdate="#{now}"/>

Je suppose que le #{now} Le haricot géré peut être utilisé dans de nombreuses autres situations, et probablement dans la vôtre aussi.

Si votre projet n'utilise pas encore Omnifaces, je vous suggère de jeter un coup d'œil à leurs spécifications et de voir dans quelle mesure elles pourraient vous être utiles. Par exemple, j'utilise leur validateOrder tag pour s'assurer que deux dates sont correctement commandées.

2voto

harrisKoud Points 19

Vous pouvez utiliser la balise que PrimeFaces fournit.

<p:clock pattern="HH:mm:ss dd-MM-yyyy"/>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X