JSF 2.0/CDI范围和最佳实践



让我们假设我有以下结构:

  • pageA.xhtml-在这里,我们可以选择pageBpageC中需要的项目,但pageE不需要。

  • pageB.xhtml-这里我们使用从pageA中选择的项。我们这个页面上还有一个selectBox和一些按钮。当从选择框中选择某个内容时,某些按钮将被停用,并且可以显示某些文本。(刷新此页面时,我们希望再次处于相同状态)。第B页包括pageD,其中列出了一些内容。现在我们可以导航到页面C。我们还创建了一些只与pageC相关但与其他页面无关的对象。

  • pageC.xhtml-在这里,我们从pageB获取对象,并根据一些用户输入对其进行修改,当我们按下apply时,我们会返回到页面B,该页面显示我们的变化。在pageB中,我们可以按保存,保存更改,pageD(包含在pageB)将更新。

  • pageD.xhtml-只是列出了一些内容。(仅包含在页面B中)

  • pageE.xhtml-此页面将启动完全不同的内容,不需要pageA的输入,但您可以直接导航到页面C。在这种情况下,pageC必须隐藏一些东西

我希望这个例子在某种程度上是清楚的。事实上,我只是想让我的问题更清楚一点:我想知道在不同页面之间传递数据并保存实际状态的最佳做法是什么(回来时也有相同的状态)。

以及如何重置/清除某些页面中需要但不同页面中不需要的数据。例如,几个页面需要一些数据,但有些仅在嵌套页面中(在最佳情况下,嵌套页面中的数据在离开时应清除)

当然,我可以把我需要的东西保存到会话中,但当我不再需要的时候,我必须小心再次删除这些东西。JSF和CDI支持Conversations。但这里的问题是,不可能有嵌套的对话。当然,我也可以通过请求参数传递所有内容。。但在这种情况下,如果我的页面中有ajax请求,我必须小心(我想我必须始终发送所有参数)。

我将JSF 2.0与CDI结合使用。任何答复都将不胜感激。遗憾的是,我无法提供任何代码示例。。所以我希望我能够足够清晰地表达我自己。

问候kukudas

您可以创建一个新的CDI作用域或在CDI中重新创建ViewScope。还可以看看CODI对话。

最新更新