好吧,我用JSF 2.0创建了一个Web应用程序。我到处都使用会话范围 bean,因此我遇到了问题。:(我将用下面的例子来解释。
我在数据表中有用户列表。当我单击用户时,我会看到该用户的详细信息。现在,当我右键单击用户A并单击Open in new tab
时,我在新选项卡中看到了用户A的详细信息。
现在,当我右键单击用户 B 并单击在新选项卡中打开时,我会看到用户 B 的详细信息。
但是,当我进入选项卡(用户 A 详细信息所在的位置)并刷新该页面时,我会看到用户 B 详细信息。
如何克服这一点,以便如果我刷新页面,我仍然会看到用户 A 而不是用户 B 的详细信息。
将 Bean 放在视图范围内。
打开详细信息页面时,应发送 GET 请求,而不是 POST 请求。使用普通<h:link>
,通过<f:param>
将用户标识符作为请求参数传递,并在目标视图中使用转换器将其转换为正确的模型值。
作用域应仅用于会话范围的数据,例如登录用户及其首选项。
另请参阅:
- 如何选择合适的豆类范围?
- 为实体创建大纲-细节页面,如何链接它们以及选择哪个 Bean 范围