具有共享代码的多个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模板/文件