迁移到Tomcat 7和MyFaces 2.2后无法找到omnifaces.GenericEnumConverter

时间:2014-05-29 11:59:39

标签: jsf-2 jsf-2.2 omnifaces

从Tomcat升级后出于某种原因 6 - > Tomcat 7 和来自MyFaces 2.0 - > MyFaces 2.2 (使用OmniFaces 1.7

我开始收到以下错误

  

javax.faces.FacesException:找不到任何已注册的内容   converter-class by converterId:omnifaces.GenericEnumConverter           在org.apache.myfaces.application.ApplicationImpl.createConverter(ApplicationImpl.java:1533)           在org.omnifaces.application.OmniApplication.createConverter(OmniApplication.java:77)           at org.apache.myfaces.view.facelets.tag.jsf.ValueHolderRule $ LiteralConverterMetadata.applyMetadata(ValueHolderRule.java:50)           在org.apache.myfaces.view.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:45)           在javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:63)           在javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:90)           在org.apache.myfaces.view.facelets.tag.jsf.ComponentTagHandlerDelegate.apply(ComponentTagHandlerDelegate.java:290)           在javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:50)           在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:46)           在javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:55)

我现在唯一可以使用omnifaces.GenericEnumConverter的方法是手动将其添加到 faces-config.xml ,如下所示:

<converter>
    <converter-id>omnifaces.GenericEnumConverter</converter-id>
    <converter-class>org.omnifaces.converter.GenericEnumConverter</converter-class>
</converter>

任何想法为什么?我该如何解决?

感谢。

1 个答案:

答案 0 :(得分:1)

如果你有

,就会发生这种情况
<faces-config ... metadata-complete="true">

在您的网络应用/WEB-INF/faces-config.xml中。这样,JSF就不会扫描JAR以获取其他JSF工件,例如@FacesConverter等等。

Jsut删除整个metadata-complete属性,默认为false


对于具体问题,

无关,MyFaces 2.2内部已经修复了the problem,其中引入了OmniFaces GenericEnumConverter作为解决方案。您实际上可以安全地从代码中删除它。