Jsf Netbeans警告:未找到符合注入条件的已启用bean

Jsf Netbeans警告:未找到符合注入条件的已启用bean,jsf,netbeans,warnings,observer-pattern,cdi,Jsf,Netbeans,Warnings,Observer Pattern,Cdi,我有两颗豆子系统的第一个bean语言: @Named(value = "languageOfSystem") @SessionScoped public class LanguageOfSystem implements Serializable { @Inject private JsfUtils eeJsfUtils; 和第二个bean,userBb: @Named(value = "userBb") @SessionScoped public class UserBb implem

我有两颗豆子系统的第一个bean语言:

@Named(value = "languageOfSystem")
@SessionScoped
public class LanguageOfSystem implements Serializable {
   @Inject private JsfUtils eeJsfUtils;
第二个bean,userBb:

@Named(value = "userBb")
@SessionScoped
public class UserBb implements Serializable, LangUpdInterface {
   @EJB
   private EjbUtils ejbUtils;
   @EJB
   private PuserFacade puserFacade;
   @Inject
   private Direction direction;
   @Inject
   private PortfelDao portfelDao;
   @Inject
   private LanguageOfSystem languageOfSystem;
我将系统的
语言
注入到
userBb
中,NetBeans IDE根据该注入向我发出警告:

no enabled eligible for injection beans are found
但我能够在
userBb
中从系统的
languageOfSystem
调用方法,而且效果很好。那么这个警告重要吗?我应该改变smth吗


第二个问题。我在本例中使用,
userBb
是依赖项,
languageOfSystem
是具有依赖项列表的主题。我通过从系统的
语言中调用适当的方法,在主题列表中注册
userBb
。两个会话bean是否正确?

关于第一个问题:

这是一个已知的netbeans错误(请参阅和)。然而,第一个链接中的讨论表明,这是一个焊接实施的问题,Netbeans的警告符合规范

尽管如此,bugzilla文件说它将在NetBeansV7.2中修复

在此之前,您仍然可以禁用警告(工具-->选项-->编辑器-->提示)

但我能够从userBb和它中的系统语言调用方法 很好

你的代码看起来没有错——而且它是有效的。所以这似乎是一个Netbeans问题

第二个问题。我在本例中使用了观察者设计模式, 其中userBb是依赖的,系统的语言是 有一份家属名单。我通过调用在主题列表中注册userBb 从系统语言中选择合适的方法。这是对的吗 两个会话bean

您是否意识到CDI规范包含了一个强大的观察者模式的示例?你绝对应该看看这个

这里还有两件事要提:

@Named(value = "languageOfSystem")
@Named(value = "userBb")
  • 您提供的值已经是默认值。所以你可以离开它 取出并简单地写下名为
  • 关于您发布的代码:
    @Named
    完全不是必需的- 它所做的只是提供一个EL名称,供JSF使用。您的代码将 如果你完全跳过@Named,效果也一样好

  • 谢谢,这也很有帮助。这也可以在NetBeans 8.0中看到。我使用NetBeans 8.0.2和
    @Inject
    以及Omnifaces中的
    @Param
    得到了相同的恼人警告。我在jsf页面中使用了来自这两个bean的方法,所以我需要@Named注释。你离开(value=“smth”)是对的。我只是对“什么是最佳实践”没有信心,所以在我的例子中,它已经过时了,有点像评论。关于cdi类型安全实现,它看起来很有希望,但对我来说有点神秘。我想要一个有效的例子。但是我会尽力去理解的。哇:哦)我做到了。我是说我使用了cdi的观察者模式。它与纯模式稍有不同,但非常简单、有用和强大。它提供了比纯解更松散的耦合。谢谢你的建议。