是否有一个无数据库、primefaces 和“keep-session-alive”的解决方案来防止或在恢复表单输入时在后台静默处理 ViewExpiredException?
例如,具有“保持登录 cookie”的用户不希望被重定向到某种错误页面或起始页面;他填写了一些表单值,一小时后回来,然后,当他提交表单时,将使用之前的输入重新创建相同的视图,并再次重新执行底层 requestscope-bean 的提交操作。
我已经注意到了 omnifaces 和 mojarras
<o:enableRestorableView />
<f:view transient="true">
但当我们谈论永久登录用户时,我不确定这是否是正确的方法。
感谢您指出正确的方向。
使用之前的输入重新创建相同的视图,并再次重新执行底层 requestscope-bean 的提交操作
正是为了满足此要求,透明地重新创建和恢复与绑定的过期 JSF 表单request作用域 bean,无状态 JSF,如<f:view transient="true">
是正确的解决方案。
The <o:enableRestorableView> http://showcase.omnifaces.org/taghandlers/enableRestorableView在这种特定情况下是不必要的。它仅适用于透明地重新创建和恢复与绑定的过期 JSF 表单。view作用域 bean。您只需要根据请求参数手动填充视图作用域 bean 属性即可。@PostConstruct
.
换句话说,您不需要混合这些解决方案。从技术上讲,它确实没有意义,因为视图作用域 bean 在无状态 JSF 中无论如何都是无用的,它们的行为就像请求作用域 bean 一样。
也可以看看:
- JSF 中的无状态有什么用处? https://stackoverflow.com/questions/14890995/what-is-the-usefulness-of-statelessness-in-jsf
- 会话过期后恢复@ViewScoped bean中的请求参数 https://stackoverflow.com/questions/24394142/restoring-request-parameters-after-session-expires/
- javax.faces.application.ViewExpiredException:视图无法恢复 https://stackoverflow.com/questions/3642919/javax-faces-application-viewexpiredexception-view-could-not-be-restored
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)