会话到期实时剩余时间

时间:2011-06-06 15:40:08

标签: jsf session

在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分钟:假设实时显示秒数并不那么容易)!这样它就会在会话到期前更新剩余时间。

我该怎么做?否则,你有更好的解决方案吗?

2 个答案:

答案 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" />