【问题标题】:Use of ViewScoped beans Vs Flash Scope Beans Vs ConversationsViewScoped bean 与 Flash Scope Bean 与对话的使用
【发布时间】:2013-05-16 16:17:13
【问题描述】:

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

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

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

  1. 用户点击(实际上是右击“在另一个选项卡中打开链接”)查看一个人的详细信息1
  2. 用户点击查看另一个人的详细信息 2.
  3. 用户对人员 1 进行更改
  4. 用户对人员 2 进行更改。
  5. 用户返回 person1-detail 页面并再次进行更改

是否可以使用 ViewScoped Beans 中支持的人员详细信息来实现页面?如果是这样,从搜索结果页面导航到 detail-person 页面的请求应该是 post-request 吗?还有其他解决方法吗?闪光范围?对话?

【问题讨论】:

    标签: jsf-2 view-scope


    【解决方案1】:

    将列表保留在@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 可能会很好。

    祝你好运

    【讨论】:

    • 非常感谢您的回复。你的最后一段正是我所需要的。我想在不使用 RequestBean 的情况下保持同一视图的不同状态。我可以使用 ViewScope 或 FlashScope 吗?
    • RequestScoped bean 有什么问题?这些是最好的豆子。如果您喜欢答案,请考虑接受和/或投票
    猜你喜欢
    • 2012-10-15
    • 1970-01-01
    • 2014-02-12
    • 2011-06-08
    • 2014-02-14
    • 2011-01-02
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    相关资源
    最近更新 更多