我有 3 个不同的页面,我在其中使用用户列表。
第一页包含来自一个会话范围托管 bean 的用户的数据表。在该页面上,我可以更改选定的用户详细信息。
第二页还包含带有用户的数据表,但来自不同的会话范围 bean。在此页面上,我也从 dataTable(用户列表)和数据库中删除了用户。
我意识到这不是一个好主意,因为如果我对一个用户进行了更改,那么这些更改将不会显示在我删除用户的页面上。
仅具有用户列表的应用程序范围 bean 是解决方案吗?
我有 3 个不同的页面,我在其中使用用户列表。
第一页包含来自一个会话范围托管 bean 的用户的数据表。在该页面上,我可以更改选定的用户详细信息。
第二页还包含带有用户的数据表,但来自不同的会话范围 bean。在此页面上,我也从 dataTable(用户列表)和数据库中删除了用户。
我意识到这不是一个好主意,因为如果我对一个用户进行了更改,那么这些更改将不会显示在我删除用户的页面上。
仅具有用户列表的应用程序范围 bean 是解决方案吗?
仅具有用户列表的应用程序范围 bean 是解决方案吗?
不,它不会解决您面临的问题,而且您毕竟会遇到并发问题,因为 web 应用程序通常是一个多用户环境,您需要做一切synchronized
来防止讨厌ConcurrentModificationException
和喜欢。应用程序范围的 bean 即在 webapp 的所有用户之间共享。在应用程序范围的 bean 中保存请求/视图范围的数据是没有意义的,即使会话范围太宽。
因此,您的问题是会话范围太广。您想在每个新的 GET 请求上刷新列表。实现这一点的最佳方法是将 bean 放入请求或更好的视图范围中。编辑用户详细信息的 bean 可以是另一个 bean,但是当您不想使编辑页面成为可收藏的 GET 请求时,这也可以很容易地成为第一个 bean 的属性。