Netbeans警告:未找到符合注入Bean条件的资格

时间:2012-05-10 07:48:22

标签: jsf netbeans warnings observer-pattern cdi

我有两个豆子。 第一个 bean languageOfSystem:

@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;

我将languageOfSystem注入userBb,NetBeans IDE根据该注入向我发出警告:

no enabled eligible for injection beans are found

但我可以在languageOfSystem中调用来自userBb的方法,但效果很好。这个警告是否很重要,我应该改变smth吗?

第二个问题。我在这种情况下使用observer design pattern,其中userBb依赖,languageOfSystem是具有依赖列表的主题。我通过从userBb调用适当的方法在主题列表中注册languageOfSystem。这对两个会话bean来说是对的吗?

2 个答案:

答案 0 :(得分:4)

  

但是我能够在userBb和它中调用languageOfSystem的方法   工作正常。

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

  

第二个问题。我在这种情况下使用观察者设计模式,   其中userBb是依赖的,而languageOfSystem是其中的主题   有一个家属列表。我通过调用在主题列表中注册userBb   languageOfSystem的适当方法。它是对的   这两个会话bean?

您是否知道CDI规范包含强大且typesafe implementation的观察者模式?你一定要看看这个。

还有两件事要提到:

@Named(value = "languageOfSystem")
@Named(value = "userBb")
  1. 您提供的值已经是默认值。所以你可以离开它 而只是简单地写@Named
  2. 关于您发布的代码:根本不需要@Named - 它所做的就是提供一个用于JSF的EL名称。你的代码会 如果你完全跳过@Named就可以了。

答案 1 :(得分:2)

关于你的第一个问题:

这是一个已知的netbeans错误(请参阅herehere)。但是,第一个链接中的讨论表明它是焊接实施的一个问题,Netbeans的警告是根据规范。

然而,bugzilla文件说它将在Netbeans v7.2中修复。

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