gpt4 book ai didi

jsf-2 - JSF2.0 Tomcat7中@Named和@ManagedBean注解的区别

转载 作者:行者123 更新时间:2023-12-03 10:54:58 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Backing beans (@ManagedBean) or CDI Beans (@Named)?

(5 个回答)


5年前关闭。




这可能是一个菜鸟问题,但是在很多教程和示例中,我看到这些注释被使用,就好像它们做同样的事情一样。

但是我在使用 @Named 时遇到了一些限制。一个(尤其是依赖注入(inject)等)我找不到解释差异的来源,如果有人能粗略概述何时使用其中一个,我将非常感激。

最佳答案

@Named为 CDI 托管 bean 提供一个 EL 名称,以便在 JSF 或 JSP 等 View 技术中使用。请注意,在 CDI 应用程序中,您不需要 @Named注释以使 bean 由 CDI 管理(感谢@Karl 的评论)。@ManagedBean使 bean 由 JSF 管理,您可以:

  • 将其注入(inject)到其他 @ManagedBean 注释的 bean 中(但不是注入(inject)到 @Named bean 中!)
  • 通过表达式语言
  • 从您的 View 中访问它

    看到这个 related question欲了解更多信息,注入(inject)如何在两种 bean 中工作。
    请注意,bean 的范围也有所不同。它们来自不同的包,但名称相同(JSF: javax.faces.bean,CDI: javax.enterprise.context,因此如果包含错误的类,通常会导致错误和困惑。
    根据我的经验:您应该尽可能使用 CDI bean,因为它们比 JSF 托管 bean 更灵活。唯一的缺点是 CDI 不知道 View 范围,因此您要么需要回退到 @ManagedBean 要么使用诸如 Seam 之类的第三方扩展。
    编辑:CDI 支持 ViewScope,有关 LINK 的更多信息

    关于jsf-2 - JSF2.0 Tomcat7中@Named和@ManagedBean注解的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10994158/

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