【问题标题】:JSF 2.0 /CDI Scopes and Best PractisesJSF 2.0 /CDI 范围和最佳实践
【发布时间】:2012-08-03 16:23:24
【问题描述】:

假设我有以下结构:

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

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

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

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

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

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

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

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

我正在使用 JSF 2.0 和 CDI。任何答案将不胜感激。遗憾的是我无法提供任何代码示例..所以我希望我能够足够清楚地表达自己。

祝你好运

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • CODI 看起来很有希望,我会试一试。
    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多