gpt4 book ai didi

java - CDI 缺少@ViewScoped 和@FlashScoped

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:53:56 24 4
gpt4 key购买 nike

为什么 Java EE 6 CDI 缺少 @ViewScoped 和 @FlashScoped 注释? (尤其是前者让我很奇怪,因为 CDI 源于 Seam 世界,它已经知道非常相似的 ScopeType.PAGE...)

使用 CDI 时推荐的解决方法是什么?使用 Seam 3?

谢谢

最佳答案

@ViewScoped特定于 MVC 框架 JSF,而不是依赖注入(inject)框架 CDI。只要您与同一个 JSF View 交互, View 范围就会存在。 CDI 并没有真正的“ View ”概念。 CDI 的替代方案是 @ConversationScoped它比请求范围长,但比 session 范围短。你只需要自己控制终止。如有必要,您可以使用 MyFaces CODI将 JSF @ViewScoped 桥接到 CDI @Named bean。即将推出的 JSF 2.2 将在 javax.faces.view 包中包含 CDI 兼容的 @ViewScoped

@FlashScoped doesn't exist在 JSF 中。 JSF flash scope基本上存在一个 map ,它由一个短暂的 cookie 支持,该 cookie 在 HTTP 重定向后仍然存在。您不能让 JSF 将托管 bean 放在这个范围内。您必须自己手动将值放入/从 map 中获取值和/或使用 EL 中的 #{flash} 引用,它基本上引用了 map 。 Seam Faces然而,它的 @FlashScoped 注释劫持了 JSF 特定的 javax.faces.bean 包,但这绝对不是来自标准的 JSF API。

另见:

关于java - CDI 缺少@ViewScoped 和@FlashScoped,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7812985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com