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

Hei*_*erg 35 eclipse jsf projects structure

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

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

Eclipse可以很容易地为java源添加外部文件夹,但不能满足其他文件类型.我很欣赏任何想法.

Bal*_*usC 63

在Eclipse中创建一个新的"Java项目".将其作为另一个项目添加到主动态Web项目的Deployment Assembly属性中.这样,它将自动结束为/WEB-INF/libWeb项目构建中的JAR .从较新的Eclipse版本开始,您还可以将项目创建为"Web Fragment Project".这样,部署程序集步骤将自动完成.

将所有这些共享的JSF2/Facelets资源文件放在/META-INF/resourcesJava项目的文件夹中.就像WebContent/resources主Web项目一样对待它.Tagfiles可以保存在自己的/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
 :
Run Code Online (Sandbox Code Playgroud)

<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" />
...
Run Code Online (Sandbox Code Playgroud)

如果要触发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>
Run Code Online (Sandbox Code Playgroud)

就这样.

也可以看看:

  • 非常感谢!我也很荣幸*你的回复在很多场合经常出现在你的博客上的一些JSF问题! (5认同)
  • 谢谢弗雷德里克。我用“勾号”标记将其标记为答案。我现在需要“建立声誉”,以便我可以投票(需要“15 声誉”才能投票) (2认同)