java - 使用 URL 参数的 JSF Managed Bean 方法调用

标签 java jsf onload managed-bean url-parameters

我有一个支持我的网络应用程序的 Session Scoped 托管 bean。在此网络应用程序中,我希望用户能够执行包含用户 ID 和日期的 URL。然后这将触发托管 bean 中的一个方法,并将网络应用程序跳转到该用户 ID 和日期。

简单的答案是将用于从 URL 中提取参数的代码放在托管 bean 的构造函数中。但问题在于它是 Session Scoped,因此构造函数仅在初始加载时调用。如果用户打开 Web 应用程序并对其进行操作,然后使用新参数执行 URL,则无法调用构造函数。

有什么方法可以在每次执行应用程序 URL 时(每次加载页面时)在受管 Bean 上执行一个方法,而不管 session 状态如何?

最佳答案

通过将作业破解成 View 调用的 getter 是可能的,但不,你真的不想拥有它。 session 范围的 bean 在同一 session 中的所有浏览器窗口/选项卡之间共享。窗口/选项卡中的每个更改都会影响所有其他窗口/选项卡。这可能会导致“wtf?”因此对您网站的一般 UX(用户体验)不利的体验。

如果您想拦截 GET 请求,或者如果您使用的是 JSF 2.0,那么您确实需要将该 bean 放在请求范围内,如果您希望在初始 GET 后的后续 POST 请求中保持状态,则需要将该 bean 放在 View 范围内要求。 session 范围的 bean 旨在保存 session 范围的数据,例如登录用户、其首选项等。它不适用于请求范围内的数据,例如请求参数等。

关于java - 使用 URL 参数的 JSF Managed Bean 方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7234199/

相关文章:

Javascript,暂停/恢复 window.load 事件

java - 我可以为 JDB 编写脚本吗 - Java 调试器

java - f :viewParam with Converter and ViewScoped exception out when invoke the second ajax request

jsf - 从 java.util.Map 创建动态表

css - 在 primefaces 数据表列中居中输出文本

javascript - 这是您合并 Onload 事件的方式吗?

javascript - window.onload 没有被触发

java - 等待通知无限循环

java - 不同的屏幕尺寸

javascript - JQuery 自动完成大量数据