如何从lib / jar文件中注入FacesConverter或托管bean?

时间:2012-06-07 07:42:24

标签: jsf ejb war cdi

我尝试构建一个使用EJB(包括EJB和FacesConverters / ManagedBeans)的JSF 2.0 Web应用程序。

我的战争档案如下:

-WEB-INF/
 |-beans.xml
 |-lib/
 |  |-myejb.jar
 |  |-myconverter.jar

两个jar文件还包含放置在META-INF文件夹中的beans.xml文件。 奇怪的是,EJB运行良好。 但我的web应用程序中看不到包含在myconverter.jar文件中的转换器。我收到以下消息:

javax.faces.FacesException:Ausdrucksfehler:Benanntes Objekt org.imixs.VectorConverter nicht gefunden。

当我将转换器类直接放入我的Web模块的类中时,它可以工作。

转换器类看起来像这样:

...
@FacesConverter(value="org.imixs.VectorConverter")
public class VectorConverter implements Converter {

我没有使用faces-config.xml

转换器添加到我的xhmtl文件中,如下所示:

<h:inputTextarea required="false"
    value="#{teamController.members}">
    <f:converter converterId="org.imixs.VectorConverter" />
 </h:inputTextarea>

所以我的问题是:为什么转换器放入jar模块时看不到转换器?

我在GlassFish 3.1.1

上运行应用程序

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

myconverter.jar是否也包含/META-INF/faces-config.xml?我认为这是必需的,因此您的容器还会在JAR文件中扫描JSF注释。像这样的空faces-config.xml应该是这个工作:

<?xml version='1.0' encoding='UTF-8'?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" version="2.0">

</faces-config>