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

时间:2011-08-22 21:36:32

标签: jsf managed-bean

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

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

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

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

应用程序范围bean是否仅包含用户列表?

1 个答案:

答案 0 :(得分:1)

  

应用程序范围bean是否仅包含用户列表?

不,它不会解决你所面临的问题而且你毕竟会遇到并发问题,因为webapplication通常是一个多用户环境,你需要将所有内容synchronized设置为防止讨厌的ConcurrentModificationException和喜欢。应用程序范围的bean即在webapp的所有用户之间共享。在应用程序范围的bean中保存请求/视图作用域数据是没有意义的,即使会话范围太宽。

因此,您的问题是会话范围太广。您想在每个新的GET请求上刷新列表。最好的做法是将bean放在请求中,或者更好地查看范围。编辑用户详细信息的bean可能是另一个,但是当你不想让编辑页面成为可收藏的GET请求时,这又可以很容易地成为第一个bean的一个属性。

另见: