在JSF页面上显示当前日期
是否有可能在不使用支持bean的情况下在JSF中显示当前日期(今天的日期)?
我有以下代码片段,但它没有解决。
<div class="leftSide">Today's date #{currentDate}</div>
要么
<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>
您可以在faces-config.xml
中将java.util.Date
的实例注册为请求作用域bean。
<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>
这样,它就可以作为#{currentDate}
而不需要自定义支持bean类。
更新 :JSF实用程序库OmniFaces有一个已经注册为#{now}
的bean。 所以如果你碰巧使用了OmniFaces,你可以直接使用它。
<h:outputText value="#{now}">
<f:convertDateTime pattern="MM/dd/yyyy" type="date" />
</h:outputText>
在JSF中,您可以使用隐式EL对象session
来提供对当前HttpSession的访问。 HttpSession#getLastAccessedTime
时间...
...返回客户端最后一次发送与此会话相关联的请求的时间,为格林威治标准时间1970年1月1日午夜以来的毫秒数,并且标记为容器收到请求的时间。
所以你可以在你的facelet中使用下面的代码片段:
<h:outputText value="#{session.lastAccessedTime}">
<f:convertDateTime pattern="MM/dd/yyyy" type="date" />
</h:outputText>
这将是服务器时间,并且可能与客户端时间在不同时区方面有所不同。
但您也可以使用JavaScript解决方案,如下所述:
如何在JavaScript中获取当前日期?
或者你可以使用Omnifaces来完成。 我很惊讶BalusC没有告诉你这个解决方案(我认为他是一个伟大的Omnifaces贡献者)。 也许这是因为使用Omnifaces只是为了在页面中显示一个简单的日期可能对某些人来说太过矫枉过正。
无论如何,如果你的项目已经使用了Omnifaces,那么默认情况下有2个托管bean被暴露出来,特别是你可能会觉得很方便。 根据标签文档指定,一旦Omnifaces添加到您的项目中,您就可以使用#{now}
管理的bean。
例如,要设置Primefaces日历的最大日期,我只写了以下内容:
<p:calendar id="myCalendar" pattern="dd/MM/yyyy"
value="#{mybean.myDate}" maxdate="#{now}"/>
我想#{now}
管理的bean可以用在更多的情况下,也可能是你的。
如果你的项目还没有使用Omnifaces,我建议你看看他们的规范,看看它可能对你有多大帮助。 例如,我使用他们的validateOrder
标签来确保两个日期的正确排序。