2012-02-02 52 views
1

我有一个员工会话bean,它具有相同类的相关员工bean的列表。我的用户需要能够查看“主要”员工,并从该员工那里产生多个浏览器窗口以显示相关员工的信息,但保持“主”或“根”员工视图处于活动状态,以便他们可以继续从该处开始工作。启动多个新窗口,但保持当前视图有效

我相信目前正在发生的事情是JSF会打开一个新窗口并呈现相关员工,但随后丢失原始窗口/视图的轨迹,因此如果您单击命令链接或从原始窗口运行任何内容(在您之后已经使用命令链接中的目标属性产生了新窗口)第二个动作将不会运行或调用会话bean中的任何方法,除了重新加载页面之外,它似乎没有任何操作。我相信因为你试图从一个旧的JSF视图运行一个动作,而这个视图不再被注册,所以当框架从这个过时的视图中收到一个请求时,它必须注册?也许?

本质上,我试图为同一个用户激活同一会话bean类型的多个显示,并将每个会话bean视图附加到单独的浏览器窗口。

如果您有任何想法,请让我知道。或者如果有更好的方法来做到这一点。

+0

请更具体描述具体问题。从开发人员的角度进行阐述,而不是以最终用户的视角进行阐述。例如,当你说*“如果你尝试从原始窗口运行一个命令,它会忽略它”*会发生什么。 – BalusC 2012-02-02 21:25:02

+0

对不起,谢谢你的建设性批评。我将编辑并添加更多信息。 – Eric 2012-02-02 22:19:55

+0

我认为你用几句话要寻找的是如何让用户在其他工作而不是ViewExpiredException时保持一个视图活着。 Mojarra(逻辑视图的数量)和MyFaces(MYFACES-3117见org.apache.myfaces.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION web配置参数)对这个问题有一些解决方法,但是最终的解决方案可能在JSF 2.2上。 – lu4242 2012-02-03 23:00:53

回答

1

对不起,对于迟到的答案。

我通过使用命令链接(并在新窗口中打开它)调用请求bean方法来解决此问题。这使我可以打开多个broswer窗口(每个对请求bean的新调用),而不影响会话bean“main”雇员bean。用户可以在多个窗口中同时查看多个员工。我的部分问题与JSF的误解有关。我一次只能在会话中有一个“员工”会话bean,所以当我试图用不同的员工产生多个browswer窗口时,他们都引用同一个会话雇员bean,这将不起作用。 JSF将附加到已打开的新窗口,不再意识到原始的打开窗口。

无论如何做这样的事情我会建议每次打开新窗口查看新员工时,实例化请求新的bean。

对不起,由于政策,我不能发布任何代码

+0

是的,对于在不同窗口中可能不同的数据,使用'@ SessionScoped' bean是一个典型的错误。我也犯了这个错误: - /。请注意,请求范围的bean不是唯一的选择;通常视图范围更有意义(甚至是自定义范围)。 – sleske 2014-01-23 09:37:43

相关问题