在JSF,EJB和JPA中创建Web应用程序时,我们有一个意识形态问题。在EJB中的一个会话中存储同时编辑的实体JSF
我们的例子情况是:
管理员显示的数据表的用户列表。接下来,他选择user1,这导致他进入新的用户版网站。如果他尝试打开第二张卡或窗口并在同一会话中选择user2进行同步编辑,则会出现此问题。 当我们尝试在编辑后保存user1数据时,它是不可能的,因为它在端点被user2覆盖。
数据存储: 因为我们没有在我们的项目的View部分存储任何数据[下图可用],所以在显示它之后,Managed Beans被销毁。因此,在Controller部分中,我们决定将当前选定的用户保留为Endpoint [Stateful EJB Bean]中的字段,该会话由Session Sessiond Managed Bean持有,因此对于会话是不变的。 我们相信我们不应该在Endpoint或Session Scope Managed Bean中存储任何集合。
问题: 特定情况是对情况的概述。在我们的应用程序中,我们希望在会话期间编辑同一类型的多个实体。
问题: 我们应该在哪里以及如何存储用户/管理员的当前选择,从而导致该选定实体的版本。
将数据存储在视图中,请求作用域部分允许我们控制同一会话中的多个实体,尽管我们认为这不是合适的方法。但是现在将其存储在控制器部分中会导致在同一会话中编辑同一类型的一个实体的限制。
框图位置:http://i.stack.imgur.com/9PyYr.jpg
什么应用程序服务器和它使用什么版本? – 2012-07-27 13:59:58
Glassfish 3.1。 它使@AdrianMitev有什么不同? – Atais 2012-07-27 14:14:51