1

我有一个 java ee 6 项目捆绑为包含两个 web 战争档案的 ear-file。两者都使用 Omnifaces。今天我将 Omnifaces 升级到最新的 1.6 版本。但现在我无法再部署了。我得到以下异常:

java.lang.IllegalArgumentException: Registering validator 'class org.omnifaces.validator.RequiredCheckboxValidator' failed, duplicates validator ID 'omnifaces.RequiredCheckboxValidator' of other validator 'class org.omnifaces.validator.RequiredCheckboxValidator'.
    at org.omnifaces.cdi.validator.ValidatorExtension.processValidators(ValidatorExtension.java:73)
...

我的环境:JBoss AS 7.1.1/Omnifaces 1.6/JSF Mojarra 2.1.26/Primefaces 3.5

提前谢谢。

4

1 回答 1

0

此错误已在 1.6.1 中修复。这个 bug 背后有一个故事,所以我刚刚写了一篇博客:CDI 在 EAR 中表现异常,所以 OmniFaces 1.6.1 发布了!

总结:CDI 上下文不是 WAR 范围的,而是 EAR 范围的。至于您面临的特定异常,这是因为只有一个 CDIValidatorExtension从一个 WAR 加载,然后在 EAR 范围内应用,因此处理来自两个@FacesValidatorWAR 的所有类,而不是从中加载 CDI 扩展的 WAR。

请注意,这在 OmniFaces 中不是问题。这是 CDI 在 EAR 中的工作方式中的一个问题。

于 2013-10-07T19:37:23.503 回答