My Maven EAR项目有两个WAR模块和一个EJB模块。 EJB模块中有一个FacesConverter类,当我尝试从其中一个WAR模块使用它时,它会抛出异常。我注册这个带注释的转换器@FacesConverter(“org.util.ObjectConverter”)在JSF页面中使用它
javax.servlet.ServletException:Expression Error:命名对象:找不到org.util.ObjectConverter。
当ObjectConverter在WAR模块中时,它工作正常,但不会从EJB模块加载。
我在这里缺少什么?
干杯
答案 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特定的文物。