让我们假设我有以下结构:
pageA.xhtml - 在这里,我们可以选择 pageB 和 pageC 中需要的项目,但不能选择 PAGEE
pageB.xhtml - 这里我们使用从 pageA 中选择的项目。我们 此页面上还有一个selectBox和一些按钮。 从selectBox中选择某些内容时,某些按钮将被取消激活,并且可以显示一些文本。 (刷新此页面时,我们又想要相同的状态)。 pageB包括 pageD 列出了一些内容。现在我们可以导航到 pageC 。 我们还创建了一些仅与 pageC 相关但不与其他页面相关的对象。
pageC.xhtml - 这里我们从 pageB 获取对象,根据一些用户输入我们修改它,当我们按应用时,我们回来 显示 pageB 我们的变化。从 pageB ,我们可以按保存,这将保存更改, pageD (包含在 pageB 中)将是 更新
pageD.xhtml - 只列出一些内容。 (仅包含在 pageB 中)
我希望这个例子有点清楚。实际上我只是想让我的问题更清楚一些:我想知道在不同页面之间传递数据并保存实际状态的最佳实践(在返回时也具有相同的状态)。
此外,如何重置/清除某些页面所需但不是不同页面所需的数据。 例如,几个页面需要一些数据,但有些只在嵌套页面中需要(在最佳世界中,嵌套页面中的数据应该在离开时清除)
当然我可以将我需要的东西保存到会话中,但是当我不再需要它时,我必须小心地再次移除这些东西。 JSF和CDI支持对话。但问题是,无法进行嵌套对话。当然我也可以通过请求参数传递所有内容..但在这种情况下,如果我在页面中有ajax请求,我必须要小心(我想我必须总是发送所有参数)。
我正在使用带有CDI的JSF 2.0。任何答案将不胜感激。可悲的是,我无法提供任何代码示例..所以我希望我能够表达我的自我清晰。
问候kukudas
答案 0 :(得分:1)
您可以创建新的CDI范围或在CDI中重新创建ViewScope。看看CODI对话也是如此。