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

时间:2011-08-29 18:24:34

标签: java jsf onload managed-bean url-parameters

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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