Maven EAR项目不会注册Faces Converter

时间:2012-11-14 20:42:00

标签: maven jsf-2 facelets converter ear

My Maven EAR项目有两个WAR模块和一个EJB模块。 EJB模块中有一个FacesConverter类,当我尝试从其中一个WAR模块使用它时,它会抛出异常。我注册这个带注释的转换器@FacesConverter(“org.util.ObjectConverter”)在JSF页面中使用它

javax.servlet.ServletException:Expression Error:命名对象:找不到org.util.ObjectConverter。

当ObjectConverter在WAR模块中时,它工作正常,但不会从EJB模块加载。

我在这里缺少什么?

干杯

1 个答案:

答案 0 :(得分:3)

为什么要把它放在EJB模块中?前端(读取:JSF)工件应该在WAR模块中。 EJB模块应该只包含应该可以重用于JSF以外的前端的业务服务,例如JSP / Servlet,Struts2,SpringMVC,JAX-RS等.EJB模块绝对应该没有单行< / strong>代码中javax.faces.*导入/依赖。

JSF不会在EJB模块中查找转换器(更不用说任何其他与JSF相关的工件,例如验证器,托管bean和Facelets文件),而只在WAR模块中查找。只需将它们保留在WAR模块中即可。您认为需要在WAR和EJB模块之间共享的代码应该重构为一个单独的Java项目,最终作为EAR模块中的公共JAR文件(请注意,这应该包含 JSF特定的文物。