单个控制器的范围,多个视图

时间:2015-06-02 04:16:30

标签: jsf cdi scopes

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

我已经阅读了很多关于范围的内容,但仍然无法确定我应该使用哪个范围,或者让单个控制器使用不同视图的最佳做法是什么。

无法使用var unchecked = $('input[name="ringIds[]"]').not(':checked').map(function(i,v) { return this.name + '=' + this.value; }) .get().join('&'); ,因为它仅适用于一个视图。 @ViewScoped看起来不是正确的道路,@SessionScoped对于我正在寻找的东西看起来太多了。

2 个答案:

答案 0 :(得分:0)

然后使用DeltaSpike @ViewAccessScoped

从他们的文件(强调我的)

  

如果是对话,您必须手动取消范围bean(或者它们将在超时后自动终止)。但是,有时您需要的bean的生命周期尽可能长且尽可能短 - 这些bean会自动终止(尽快终止)。在这种用例中,您可以使用此范围。 简单的规则是,只要bean被页面引用 - bean就可用于下一页(如果再次使用它,则bean将再次转发)。重要的是它基于页面的view-id(它不基于请求),因此,例如,如果请求不访问所有视图访问范围的bean,则Ajax请求不会触发清理。页。这也是名称@ViewAccessScoped的原因。

答案 1 :(得分:0)

如果您的应用程序中有一个已定义的入口点和出口点,则可以使用JSF 2.2 @FlowScope

  

什么是Faces流程?

     

具有明确
的JSF视图(和相关工件)的集合   定义了一些应用程序的已定义入口和出口点   具体含义由开发商负责。通常是面部中的对象   flow旨在允许用户完成任务   需要输入多个不同的视图。规范   流程的例子是"订单结账"进程所在的用户   输入地址,付款,发货信息等,然后   最后提交整个结果,下订单。

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