JSF 2.0 / CDI范围和最佳实践

时间:2012-08-06 16:59:30

标签: jsf-2 scope java-ee-6 cdi

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

  • pageA.xhtml - 在这里,我们可以选择 pageB pageC 中需要的项目,但不能选择 PAGEE

  • pageB.xhtml - 这里我们使用从 pageA 中选择的项目。我们 此页面上还有一个selectBox和一些按钮。       从selectBox中选择某些内容时,某些按钮将被取消激活,并且可以显示一些文本。       (刷新此页面时,我们又想要相同的状态)。 pageB包括 pageD 列出了一些内容。现在我们可以导航到 pageC 。       我们还创建了一些仅与 pageC 相关但不与其他页面相关的对象。

  • pageC.xhtml - 这里我们从 pageB 获取对象,根据一些用户输入我们修改它,当我们按应用时,我们回来 显示 pageB       我们的变化。从 pageB ,我们可以按保存,这将保存更改, pageD (包含在 pageB 中)将是 更新

  • pageD.xhtml - 只列出一些内容。 (仅包含在 pageB 中)

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

我希望这个例子有点清楚。实际上我只是想让我的问题更清楚一些:我想知道在不同页面之间传递数据并保存实际状态的最佳实践(在返回时也具有相同的状态)。

此外,如何重置/清除某些页面所需但不是不同页面所需的数据。 例如,几个页面需要一些数据,但有些只在嵌套页面中需要(在最佳世界中,嵌套页面中的数据应该在离开时清除)

当然我可以将我需要的东西保存到会话中,但是当我不再需要它时,我必须小心地再次移除这些东西。 JSF和CDI支持对话。但问题是,无法进行嵌套对话。当然我也可以通过请求参数传递所有内容..但在这种情况下,如果我在页面中有ajax请求,我必须要小心(我想我必须总是发送所有参数)。

我正在使用带有CDI的JSF 2.0。任何答案将不胜感激。可悲的是,我无法提供任何代码示例..所以我希望我能够表达我的自我清晰。

问候kukudas

1 个答案:

答案 0 :(得分:1)

您可以创建新的CDI范围或在CDI中重新创建ViewScope。看看CODI对话也是如此。