Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何告诉Glassfish中的JSF2.0实例化一个CDI@替代?_Java_Jsf_Cdi_Jsr330 - Fatal编程技术网

Java 如何告诉Glassfish中的JSF2.0实例化一个CDI@替代?

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

我们有一个在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代码调用我的可选类而不是显式命名的类,但是当遵循同样的步骤时,我仍然得到基类而不是可选类

这可以直接做到吗?如果可以,如何做到


显然,这种机制在那里不起作用。在当前情况下,我们可以创建另一个faces-config.xml文件,并让项目覆盖这些文件。然后,每个项目都会提供一个替换的faces-config.xml。

这两种类型的管理bean是互斥的。CDI替代方案只适用于CDI管理的bean,而不适用于JSF管理的bean。您可以删除faces配置中的XML片段并添加@Named,然后您就可以使用@Alternative了