gpt4 book ai didi

java - 使 JSF 页面即使在 View 状态丢失后也始终具有响应能力和功能

转载 作者:行者123 更新时间:2023-12-02 00:26:53 24 4
gpt4 key购买 nike

当将 JSF 应用程序留在浏览器中一段时间​​(即直到 session 过期)时,我也无法成功运行任何操作监听器方法。因此,我页面上的所有功能都变得不活动,并且在任何操作中我都会遇到异常:

javax.faces.application.ViewExpiredException: View could not be restored

然后,我需要重新登录应用程序,从而创建一个新 session ,以获取 session 中具有新 View 状态的新页面,然后该页面即可工作。这不会带来很好的用户体验。我希望完全避免这种情况,以便我的页面在空闲期后任何时候使用时都始终可以正常工作。目前,我的状态保存如预期的那样设置为 SERVER(我不想更改此设置)。

如何使页面始终正常工作?由于并非所有功能都会导致导航到其他页面,因此我想 faces-redirect=true 不是我的解决方案。

每当 View 状态丢失时,它不能在不影响用户体验的情况下动态创建一个新的 View 状态吗!?

<小时/>

JSF2.1、Primefaces 3.1 Tomcat 7

最佳答案

要保持用户登录状态,只需实现所需的“记住我”功能,如上一个问题中的回答:Automatic login to JSF application on revisits, after once logged in .

要调用操作,即使 session 已过期,您也不能绕过将状态保存设置为客户端。如果您可以接受最终用户仅看到页面刷新的事实(如果有必要,还有一些警告/信息对话框,表明 session 已过期并且用户重新登录),那么只需发送一个页面就足够了重新登录后重定向到请求的URL:

response.sendRedirect(request.getRequestURI());

为了覆盖 ajax 请求,您需要检测请求 header 并返回特殊的 XML 响应。另请参阅Using JSF 2.0 / Facelets, is there a way to attach a global listener to all AJAX calls?

关于java - 使 JSF 页面即使在 View 状态丢失后也始终具有响应能力和功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812221/

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