在戴尔的一次采访中,我被问到了这个问题。ajax如何以1秒的间隔更新组件?
new Date()
为您提供了当前的日期/时间初始化的Date
对象。
让想我的屏幕右上角显示当前时间,和人做过这样的。
<h:outputText value="#{bean.presentDateTime}" />
这将如何修改以始终显示当前日期和时间?
在戴尔的一次采访中,我被问到了这个问题。ajax如何以1秒的间隔更新组件?
new Date()
为您提供了当前的日期/时间初始化的Date
对象。
让想我的屏幕右上角显示当前时间,和人做过这样的。
<h:outputText value="#{bean.presentDateTime}" />
这将如何修改以始终显示当前日期和时间?
基本上,你想打服务器,并在更新的时间间隔的结果。这被称为“轮询”。标准的JSF没有内置的工具,所以你仍然需要自己编写一些JS代码(或者理论上,抓住一个JSF组件,它可以透明地为你呈现所需的JS代码)。在JavaScript中,您可以使用setInterval()
来间隔执行一个函数。
所以,一旦你给时间戳组件固定ID,
<h:outputText id="presentDateTime" value="#{bean.presentDateTime}" />
和您提供的以下隐藏的形式,其命令按钮Ajax的更新它,
<h:form id="hiddenForm" style="display:none">
<h:commandButton id="updatePresentDateTime">
<f:ajax render=":presentDateTime" />
</h:commandButton>
</h:form>
那么你就可以得到它在DOM/window/body准备好的时候执行下面的脚本。
<script>
setInterval(function() {
document.getElementById("hiddenForm:updatePresentDateTime").click();
}, 1000);
</script>
不要在生产中用于这个目的(客户端时钟)。作为对面试问题的回答(或者作为some showcase page中的一个例子),这至多是可以的。在生产中,如果需要,结合以合理较长间隔运行的民意调查,可以更好地攫取“纯粹”JS,例如, 1分钟。或者如果您的环境支持它,请使用WS或SSE推送。
我几乎每天都记得我承诺的东西。不幸的是,该项目目前缺货。请不要有丝毫的怀疑。我一定会。并感谢你的答案。 –
所有在适当的时间。 – BalusC
将工作时钟(工作在第二毫秒或更低范围)同步到服务器肯定会导致服务器死机。它们在Web应用程序中不可取。 – Tiny
这肯定是个诡计问题。没有JS,这是不可能的。请注意,ajax实际上使用JS。或者,对于“没有JavaScript”的部分,实际上可能存在误解/错误解释的手段。 – BalusC
@BalusC:哦,是的!你做对了。没有Javascript,我的意思是我需要使用部分页面渲染,而不是纯javascript。我编辑了标题。 –