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



我有一个会话范围管理bean,支持我的web应用程序。在这个网络应用程序,我想有能力为用户执行包含用户id和日期的URL。然后,这将触发托管bean中的一个方法,并将web应用程序跳转到该用户id和日期。

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

是否有某种方法可以在每次执行应用程序URL时(每次加载页面时)执行托管Bean上的方法,而不管会话状态?

这可以通过将作业分解为一个由视图调用的getter来实现,但是不,你真的不想拥有它。会话作用域bean在同一会话中的所有浏览器窗口/选项卡之间共享。每个窗口/选项卡的变化都会影响所有其他窗口/选项卡。这可能会导致"wtf?"的体验,从而对您的网站的一般UX(用户体验)不利。

如果您想拦截GET请求,那么您确实需要将该bean放在请求范围中;如果您使用的是JSF 2.0,那么如果您想在初始GET请求之后的后续POST请求中维护状态,则需要将该bean放在视图范围中。会话作用域bean旨在保存会话作用域数据,例如登录用户及其首选项等。它不适用于请求范围内的数据,如请求参数等。

相关内容

  • 没有找到相关文章

最新更新