具有共享代码的多个JSF项目的结构

我有两个共享许多代码的JSF项目 – java类,xhtml文件,标签库,css和javascript文件等。我的开发环境/平台主要由Eclipse,Ant,Perforce和Tomcat组成。

有没有人find了创build和组织共享代码的方法,以便通用代码可以保留在一组文件夹中?

Eclipse使得为java源添加外部文件夹变得容易,但在其他文件types上却不够用。 我会很感激任何想法。

在Eclipse中创build一个新的“Java项目”。 将其作为另一个项目添加到主dynamicWeb项目的Deployment Assembly属性中。 这样,它将自动以Web项目构build的/WEB-INF/lib中的JAR结尾。 由于较新的Eclipse版本,您也可以将项目创build为“Web Fragment Project”。 这样部署组装步骤将自动完成。

将所有共享的JSF2 / Facelets资源文件放在Java项目的/META-INF/resources文件夹中。 只要把它看作WebContent/resources主要Web项目的WebContent/resources/META-INF/tags文件可以保存在自己的/META-INF/tags文件夹中。

例如

 CommonWebProject |-- META-INF | |-- resources | | `-- common | | |-- css | | | `-- some.css | | |-- js | | | `-- some.js | | |-- images | | | `-- some.png | | |-- components | | | `-- somecomposite.xhtml | | `-- sometemplate.xhtml | |-- tags | | `-- sometag.xhtml | |-- faces-config.xml | |-- some.taglib.xml | |-- web-fragment.xml | `-- MANIFEST.MF : 

 <h:outputStylesheet library="common" name="css/some.css" /> <h:outputScript library="common" name="js/some.js" /> <h:graphicImage library="common" name="images/some.png" /> <common:somecomposite /> <common:sometag /> <ui:include src="/common/sometemplate.xhtml" /> ... 

如果您还想触发JSF2注释扫描程序,那么您可以将@FacesValidator@FacesConverter @FacesValidator@FacesConverter和配合文件也放在该项目中,同时创build一个兼容JSF2的/META-INF/faces-config.xml文件它甚至可以保持空着)。

 <?xml version="1.0" encoding="UTF-8"?> <faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" version="2.0"> </faces-config> 

就这样。

也可以看看:

  • 将共享代码和web.xml从WAR项目拆分为常见的JAR项目
  • JSF facelets模板包装
  • 从外部文件系统或数据库获取Facelets模板/文件