Java 如何告诉Glassfish中的JSF2.0实例化一个CDI@替代?
我们有一个在Glassfish 3.1.1下运行的JSF2.0应用程序,它已经从JSF1向前移动。这意味着我有一个faces-config.xml 在线BeanHandler X.jsf.OnlineBeanHandler 一场 ... 这样做是为了允许在我的facelet页面中使用{OnlineBeanHandler}。效果很好。我还可以在OnlineBeanHandler中使用@javax.inject.inject获得一个CDI管理的bean,然后通过将其标记为@javax.enterprise.inject.alternative并在beans.xml中启用它,为其提供一个替代方案。效果很好 现在,我需要让同样的机制为OnlineBeanHandler本身工作——也就是说,-handling代码调用我的可选类而不是显式命名的类,但是当遵循同样的步骤时,我仍然得到基类而不是可选类 这可以直接做到吗?如果可以,如何做到Java 如何告诉Glassfish中的JSF2.0实例化一个CDI@替代?,java,jsf,cdi,jsr330,Java,Jsf,Cdi,Jsr330,我们有一个在Glassfish 3.1.1下运行的JSF2.0应用程序,它已经从JSF1向前移动。这意味着我有一个faces-config.xml 在线BeanHandler X.jsf.OnlineBeanHandler 一场 ... 这样做是为了允许在我的facelet页面中使用{OnlineBeanHandler}。效果很好。我还可以在OnlineBeanHandler中使用@javax.inject.inject获得一个CDI管理的bean,然后通过将其标记为@javax.enterpr
显然,这种机制在那里不起作用。在当前情况下,我们可以创建另一个faces-config.xml文件,并让项目覆盖这些文件。然后,每个项目都会提供一个替换的faces-config.xml。这两种类型的管理bean是互斥的。CDI替代方案只适用于CDI管理的bean,而不适用于JSF管理的bean。您可以删除faces配置中的XML片段并添加@Named,然后您就可以使用@Alternative了