tangguo

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

jsf

我有两个共享大量代码的JSF项目-Java类,xhtml文件,标记库,css和javascript文件等。我的开发环境/平台主要包括Eclipse,Ant,Perforce和Tomcat。

有没有人找到一种创建和组织共享代码的方法,以便公用代码可以保留在一组文件夹中?

Eclipse使添加Java源的外部文件夹变得容易,但是在其他文件类型上却不足。我将不胜感激。


阅读 344

收藏
2020-10-22

共1个答案

一尘不染

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

将所有那些共享的JSF2 / Facelets资源文件放在/META-INF/resourcesJava项目的文件夹中。就像对待WebContent/resources主要的Web项目一样。标记文件可以只保存在自己的/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
 |    |-- beans.xml
 |    |-- 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" />
...

如果您使用的是Maven,则/META-INF必须将文件夹放在其中src/main/resources,因此不能放置src/main/java。

如果要触发JSF2注释扫描仪,以及让你可以把@ManagedBean,@FacesValidator,@FacesConverter和后妃在该项目中,以及创建一个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>

就这样。

2020-10-22