gpt4 book ai didi

jsf - 无限期地保持 session 事件

转载 作者:行者123 更新时间:2023-12-03 18:23:45 24 4
gpt4 key购买 nike

有没有办法保持页面 session 处于事件状态而无需将状态发送给客户端?我无法设置 STATE_SAVING_METHODclient我宁愿不使用 a4j:keepalive .

我试过使用一个简单的隐藏 iframe 提交给有问题的 Bean,但它使主页无效。

我正在使用 JSF 1.2 和 myfaces。

这是为了绕过不需要用户登录的页面上的 ViewExpiredException。 大多数现有站点都需要用户登录。

最佳答案

将 ajax 轮询实现为“心跳”以保持 session 活跃。在最简单的情况下,您可以借助一点 jQuery 来实现,如下所示。为了避免 100 行的样板代码,让它在全世界都知道的所有不同浏览器上工作:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
setInterval(function() {
$.get("${pageContext.request.contextPath}/poll");
}, ${(pageContext.session.maxInactiveInterval - 10) * 1000});
});
</script>

${pageContext.session.maxInactiveInterval} 根据服务器端配置打印 session 尚未存活的剩余秒数(顺便说一下,这是由 <session-timeout> in web.xml 控制)并被扣除 10 秒,只是为了在它自动过期之前准时,并转换为毫秒,以便它适合 setInterval() 期待。

$.get() 在给定的 URL 上发送一个 ajax GET 请求。对于上面的示例,您需要将一个 servlet 映射到 /poll 的 URL 模式上。并在 doGet() 中基本上执行以下操作方法:
request.getSession(); // Keep session alive.

应该是这样。

关于jsf - 无限期地保持 session 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8793064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com