Afficher la Date actuelle sur la Page JSF

est-il possible d'afficher la date actuelle (d'aujourd'hui) dans JSF sans utiliser un support?

j'ai le code suivant , mais ça n'a pas marché.

<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>
40
demandé sur Thiago Arrais 2012-02-07 14:07:12

4 réponses

vous pouvez enregistrer une instance de java.util.Date comme une requête scoped bean 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 la nécessité d'une classe de support personnalisé.


mise à jour : la bibliothèque d'utilité JSF OmniFaces a un tel haricot déjà enregistré comme #{now} . Donc, si vous arrive d'utiliser OmniFaces déjà, vous pouvez simplement en faire usage directement.

<h:outputText value="#{now}">
    <f:convertDateTime pattern="MM/dd/yyyy" type="date" />
</h:outputText>
90
répondu BalusC 2014-08-05 05:46:26

dans JSF vous pouvez utiliser l'objet EL implicite session qui fournit l'accès à l'actuel HttpSession . Le temps HttpSession#getLastAccessedTime ...

... retourne la dernière fois que le client a envoyé une demande associée à cette session, comme le nombre de millisecondes depuis minuit Janvier 1, 1970 GMT, et marqué au moment où le conteneur a reçu la demande.

pour que vous puissiez utiliser le code suivant extrait dans votre facelet:

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

ce sera l'heure du serveur et peut différer de l'heure du client en ce qui concerne différents fuseaux horaires.

mais vous pouvez également utiliser une solution javascript, comme discuté ici:

Comment puis-je obtenir la date actuelle en JavaScript?

31
répondu Matt Handy 2017-05-23 11:47:13

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 Omnifaces). Peut-être que c'est parce qu'utiliser Omnifaces juste pour afficher une date simple dans une page pourrait être un surmenage pour certains.

de toute façon , si votre projet utilise déjà Omnifaces , il y a 2 haricots gérés exposés par défaut et un en particulier que vous pouvez trouver pratique. Selon la documentation de l'étiquette spécifie, une fois Omnifaces est ajouté à votre projet, vous pouvez utiliser le #{now} bean géré.

par exemple, pour fixer la date max d'un calendrier Primefaces, je viens d'écrire ce qui suit:

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

je suppose que le #{now} haricots gérés peut être utilisé dans beaucoup plus de situations, et probablement le vôtre aussi bien.

si votre projet N'utilise pas encore Omnifaces, je vous suggère de regarder leur spécification et de voir à quel point il est utile pourrait être pour vous. Par exemple, j'utilise leur étiquette validateOrder pour m'assurer que deux dates sont correctement ordonnées.

7
répondu jpramondon 2014-04-29 14:48:32

vous pouvez utiliser l'étiquette fournie par PrimeFaces.

<p:clock pattern="HH:mm:ss dd-MM-yyyy"/>
1
répondu harrisKoud 2017-11-27 13:35:17