Jsf 我应该使用什么托管bean范围?

Jsf 我应该使用什么托管bean范围?,jsf,managed-bean,Jsf,Managed Bean,我有3个不同的页面,我使用用户列表 第一页包含来自一个会话范围管理bean的用户的dataTable。在该页面上,我可以更改所选的用户详细信息 第二个页面还包含有用户的dataTable,但来自不同的会话范围bean。在这个页面上,我也从dataTable(用户列表)和数据库中删除了用户 我意识到这不是一个好主意,因为若我对一个用户进行了更改,那个么这些更改将不会显示在我删除用户的页面上 只有用户列表的应用程序范围bean是解决方案吗 只有用户列表的应用程序范围bean是解决方案吗 不,它不会解

我有3个不同的页面,我使用用户列表

第一页包含来自一个会话范围管理bean的用户的dataTable。在该页面上,我可以更改所选的用户详细信息

第二个页面还包含有用户的dataTable,但来自不同的会话范围bean。在这个页面上,我也从dataTable(用户列表)和数据库中删除了用户

我意识到这不是一个好主意,因为若我对一个用户进行了更改,那个么这些更改将不会显示在我删除用户的页面上

只有用户列表的应用程序范围bean是解决方案吗

只有用户列表的应用程序范围bean是解决方案吗

不,它不会解决您所面临的问题,毕竟您会遇到并发问题,因为Web应用程序通常是一个多用户环境,您需要使所有内容同步,以防止令人讨厌的
ConcurrentModificationException
等。应用程序范围的bean即在webapp的所有用户之间共享。在应用程序范围的bean中保存请求/视图范围的数据是没有意义的,即使会话范围太宽

因此,您的问题是会话范围太广。您希望在每次新的GET请求时刷新列表。实现这一点的最佳方法是将bean放在请求或更好的视图范围中。编辑用户详细信息的bean可以是另一个bean,但如果您不想使编辑页面成为可书签的GET请求,那么这也可以很容易地成为第一个bean的一个属性

另见: