【问题标题】:Scope for single controller, multiple views单个控制器、多个视图的范围
【发布时间】:2015-06-03 02:41:39
【问题描述】:

我一直在研究新的java 1.8 + CDI + WildFly 和JSF 2.2。

我已经阅读了很多关于范围的信息,但仍然无法弄清楚我应该使用哪个范围,或者让单个控制器处理不同视图的最佳实践是什么。

不能使用@ViewScoped,因为它只适用于一个视图。 @SessionScoped 看起来不是正确的道路,@ConversationScope 对于我正在寻找的东西来说看起来太多了。

【问题讨论】:

    标签: jsf cdi scopes


    【解决方案1】:

    如果您在应用程序中定义了入口点和出口点,则可以使用 JSF 2.2 @FlowScope

    什么是 Faces 流?

    具有显式
    的 JSF 视图(和相关工件)的集合 已分配某些应用程序的定义的入口和出口点 开发商的具体含义。通常是面中的对象 流程旨在让用户完成一项任务 需要对许多不同的视图进行输入。规范的 流程的示例是“订单结帐”流程,其中用户 输入地址、付款、送货信息等,然后 最后提交整个结果,下单。

    来源:https://javaserverfaces-spec-public.java.net/nonav/proposals/JAVASERVERFACES_SPEC_PUBLIC-730/proposal.txt

    【讨论】:

      【解决方案2】:

      然后使用DeltaSpike @ViewAccessScoped

      来自他们的文档(重点是我的)

      在对话的情况下,您必须手动取消 bean 的范围(否则它们将在超时后自动终止)。但是,有时您需要生命周期尽可能长且尽可能短的 bean——它们会自动终止(尽快)。在这样的用例中,您可以使用此范围。 简单的规则是,只要 bean 被页面引用 - bean 就可用于下一页(如果再次使用,bean 将再次转发)。它基于页面的 view-id 很重要(它不是基于请求),因此,例如,如果请求不访问页。这也是@ViewAccessScoped 这个名字的由来。

      【讨论】:

        猜你喜欢
        • 2011-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多