使用ViewScoped bean与Flash Scope Beans Vs对话

时间:2013-05-16 16:17:13

标签: jsf-2 view-scope

这是一种具有实用意义的理论问题。

我有一个页面,用户可以在其中搜索人员。搜索结果将会有符合搜索条件的人员列表。 除了每条记录(每个人)之外,还会有一个链接将用户带到另一个页面,其中包含有关用户想要了解的更多信息的更多详细信息。

到目前为止一切顺利。我的困境在现实世界中,用户可能想要同时检查几个人。我不确定如何在不使用JSF Request Beans的情况下实现。 情况是这样的:

  1. 用户点击(实际上右键点击“在另一个标签页中打开链接”)以查看人员的详细信息1
  2. 用户点击查看其他人的详细信息2。
  3. 用户对person 1进行更改
  4. 用户对人2进行更改。
  5. 用户返回person1-detail页面并再次进行更改
  6. 是否可以在ViewScoped Beans中实现支持人员详细信息的页面?如果是这样,从搜索结果页面导航到详细信息人页面的请求应该是后请求吗?还有其他解决方法吗? Flash-Scoped?谈判?

1 个答案:

答案 0 :(得分:0)

将列表保留在@ViewScoped中,使人员可以点击并使用漂亮的叠加组件,以便在他们点击链接时显示详细信息。 PrimeFaces,最流行的框架应该有几个选项,其他的。如果您的用户愿意像这样滚动,请包含一个用于打开target = _blank的按钮/链接。

支持新窗口的bean的详细信息可能是@RequestScoped并使用注入来获取正确的人员实例。这当然要求您保存点击的内容,即Person selectedPerson;,或者您可以将索引附加到该人作为请求参数并使用getPersons.get(selectedPerson);

如果您选择第二个解决方案,可能需要查看What can <f:metadata>, <f:viewParam> and <f:viewAction> be used for?`

另外,请考虑使用CDI。来自Deltaspike的第四个版本即将推出,将提供几个很好的范围。例如,如果您想在每个新窗口中跟踪单独的状态,@WindowScoped可能会很好。

祝你好运