我有两个豆。第一个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调用方法,并且工作正常。因此,此警告重要吗?我应该更改水位吗?

还有第二个问题。在这种情况下,我使用observer design pattern,其中userBb是依赖项,而languageOfSystem是具有依赖项列表的主题。我通过从userBb调用适当的方法在主题列表中注册languageOfSystem。关于两个会话Bean是否正确?

最佳答案

但是我可以从userBb中的languageOfSystem调用方法
工作良好。


您的代码看起来没有错-并且可以正常工作。因此这似乎是Netbeans的问题。


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


您是否知道CDI规范包含功能强大且typesafe implementation的观察者模式?您绝对应该检查一下。

还有两件事要在这里提及:

@Named(value = "languageOfSystem")
@Named(value = "userBb")



您提供的值已经是默认值。所以你可以离开它
并直接写@Named即可。
关于您要发布的代码:完全不需要@Named-
它所做的只是提供在JSF中使用的EL名称。您的代码将
如果完全跳过@Named,效果也一样...

08-26 15:36