当前位置: 首页 > 面试题库 >

CDI缺少@ViewScoped和@FlashScoped

陈斌
2023-03-14
问题内容

为什么Java EE 6
CDI缺少@ViewScoped和@FlashScoped批注?(特别是前者让我感到奇怪,因为CDI来自Seam世界,而Seam世界已经知道非常相似的ScopeType.PAGE
…)

使用CDI时,建议的解决方法是什么?使用Seam 3?

谢谢


问题答案:

@ViewScoped特定的MVC框架JSF,而不是依赖注入框架CDI。只要您与同一JSF视图进行交互,该视图范围就可以存在。CDI并没有真正的“视图”概念。CDI替代方案的@ConversationScoped生存期比请求范围长,但比会话范围短。您只需要自己控制终端即可。如果需要,可以使用MyFaces
CODI
将JSF桥@ViewScoped接到CDI
@Namedbean。即将发布的JSF 2.2将@ViewScopedjavax.faces.view软件包中兼容CDI 。

@FlashScoped
不存在的JSF。JSF
Flash作用域基本上是一个映射,该映射由一个短期生存的cookie作为后盾,该cookie在HTTP重定向后仍然有效。您不能让JSF将托管bean放在此范围内。您必须自己亲自/从地图中获取/获取值,和/或使用#{flash}EL中的引用,该参考基本上会干扰地图。但是,Seam
Faces已经劫持了JSF特定的javax.faces.bean软件包进行@FlashScoped注释,但这绝对不是来自标准JSF
API。



 类似资料:
  • 我在JBoss EAP 6上使用Java EE 6,我的JSF bean注释如下:(都来自包) 但是,它们也是CDI bean(默认构造函数,使用、等)。我一直读到不能混合这些注释(JSF和CDI),但它显然工作得很好:注入工作正常,视图更改时调用preDestroy等)。 我是不是漏掉了什么?问题出在哪里?为什么不用呢?

  • 我有一个JSF的问题,CDI项目。我做了大量研究,发现在CDI中没有注释。我用对话框解决基于ajax的页面的问题。我想将变量从DataTable传递到dialog。为此,我不能使用bean,因为在请求结束后会丢弃值。有人能帮我解决吗?我不能使用,但这是一个糟糕的做法。或者只保存这一个变量到会话谁知道。你们能给我一些提示如何优雅地解决这个问题吗? 以下是错误消息:

  • 我有日期值,很少日期是完整的(格式:yyyy-mm-dd,但作为文本,而不是日期格式),但很少日期有缺失的月和日值,现在我必须添加缺失的月和日。示例:如果缺少日,则必须将该月的第一天添加到日期中,如果缺少月和日,则必须将1月1日添加到年部分中,在sql中,我可以简单地将数字连接起来,如下所示: 现在类似的连接必须在POSTGRESQL中完成,我尝试使用CAST和to_char以及其他一些函数,但我

  • 今天,我调试了我的代码。但是,当我删除bot的权限时,出现了一个错误,“discordapi:缺少权限”。因此,我尝试了一些方法让bot检查它是否具有所需的权限。但是,当我尝试下面的代码时,我再次遇到一个错误:“UnhandledPromisejectionWarning:TypeError:无法读取未定义的属性'has'”

  • 测试:测试 用户代理:Mozilla/5.0(Linux;Android 4.4.2;SCH-I535 Build/KOT49h)AppleWebKit/537.36(KHTML,like Gecko)版本/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 查询字符串参数client_id=XXX-OH7O4CMAJU3JGPRLLLN97NF0P3PC1F91.a

  • 问:您是如何处理这些用例的? 是否使用静态帮助器方法? 是否使用后跟isafter/isbefore的详细等于? 是否使用否定的相反条件? 是否使用第三方库帮助程序? null Edit:正如Andreas所建议的,我用方法添加了版本,我希望我正确(无需测试)。 编辑2:示例: