- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
为什么 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/
应用程序基于 Stripes 和 Spring。每次我打电话FlashScope.getCurrent(..)方法返回 FlashScope 的新干净实例。不过如果我打电话FlashScope.get
用户单击时如何打开新标签p:commandButton ?我还想使用 FlashScope 将一些参数传递给新页面。这是代码: public String newTab() { Face
我正在grails portlet中使用def liferay_portlet_private_session_attributes = false来进行liferay。 我用来与其他portlet共
为什么 Java EE 6 CDI 缺少 @ViewScoped 和 @FlashScoped 注释? (尤其是前者让我很奇怪,因为 CDI 源于 Seam 世界,它已经知道非常相似的 ScopeTy
我是一名优秀的程序员,十分优秀!