戴尔在接受采访时被问到这个问题。
new Date()
为您提供了一个使用当前日期/时间初始化的Date
对象。
假设我的屏幕右上角显示当前时间,一个人就是这样做的。
<h:outputText value="#{bean.presentDateTime}" />
如何修改以始终显示当前日期与时间?
答案 0 :(得分:3)
基本上,您希望按时间间隔点击服务器并更新结果。这称为“民意调查”。标准的JSF没有内置工具,所以你仍然需要自己编写一些JS代码(或者理论上,抓住一个JSF组件,为你透明地呈现所需的JS代码)。在JavaScript中,您可以使用setInterval()
定期执行函数。
因此,一旦为时间戳组件提供了固定ID,
<h:outputText id="presentDateTime" value="#{bean.presentDateTime}" />
并提供以下隐藏的表单,其命令按钮ajax-updates it,
<h:form id="hiddenForm" style="display:none">
<h:commandButton id="updatePresentDateTime">
<f:ajax render=":presentDateTime" />
</h:commandButton>
</h:form>
然后您可以使用在DOM / window / body ready期间执行的以下脚本来运行它。
<script>
setInterval(function() {
document.getElementById("hiddenForm:updatePresentDateTime").click();
}, 1000);
</script>
不要在生产中将它用于此目的(客户端时钟)。作为面试问题的答案(或some showcase page中的一个例子),它最多可以。在生产中,如果有必要的话,可以更好地抓住“纯粹的”JS,以及以合理的较长间隔运行的民意调查,例如1分钟。或者,如果您的环境支持它,请使用push via WS或SSE。