我尝试构建一个使用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
上运行应用程序感谢您的帮助
答案 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>