在JSF 2.0上下文中,session.getMaxInactiveInterval()
以静态方式返回会话到期剩余时间。
是否有任何解决方法允许人们实时显示剩余时间?
像系统线程的东西。
在我的Web应用程序中,我使用的是一个primeFaces组件(一个模式对话框),它在用户不活动(tmeout)一段时间后显示自己,显示一条消息“你在吗?”。 实际上,我想要的是在该对话框中添加如下内容:
<h:outputText id="remainder" value="#{sessionEar.maxInactiveInterval}" >
<f:ajax execute="@form" render="remainder" event="????"/>
</h:outputText>
所以我的想法是每5秒或每60秒重新渲染<h:outputText />
(1分钟:假设实时显示秒数并不那么容易)!这样它就会在会话到期前更新剩余时间。
我该怎么做?否则,你有更好的解决方案吗?
答案 0 :(得分:3)
我建议使用基于javascript的计时器,首先读取#remainder的值。这样你就不必为了申请新的时间而进行任何往返旅行。
var interval=setInterval('updateSessionTimer()',1000); // every second
var remainder = document.getElemetById('remainder');
function updateSessionTimer()
{
secondsLeft = parseInt( remainder.innerText );
remainder.innerHTML = secondsLeft-1;
}
答案 1 :(得分:0)
我完成了使用PrimeFaces Poll组件,这是直接适合的。
<p:poll interval="1" update="remainder" />