2012-01-16 1 views
4

JSF 1.2のfaceletsコンポーネント(ui:composition)がたくさんあります。私たちは、彼らがJSF 2の複合コンポーネントになりたいとしたい複数のJSF2コンポジットコンポーネントライブラリを1つのネームスペースにバンドルする方法

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE facelet-taglib PUBLIC 
    "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" 
    "http://java.sun.com/dtd/facelet-taglib_1_0.dtd"> 

<facelet-taglib> 
    <namespace>http://www.ourcompany.de/jsf</namespace> 

    <tag> 
     <tag-name>desktop</tag-name> 
     <source>./facelets/tags/layout/desktop.xhtml</source> 
    </tag> 

    <tag> 
     <tag-name>inputField</tag-name> 
     <source>./facelets/tags/inputfields/inputField.xhtml</source> 
    </tag> 

     ... 
</facelet-taglib> 

:彼らは、彼らが1つの名前空間の下にタグライブラリ記述子内に登録されている

facelets 
    /tags 
     /inputfields 
     /layout 
     /core 
     /... 

...このような異なるフォルダに整理されていそれらを別々のフォルダにまとめる。 JSF 2はコンベンショナルに、/resourcesフォルダに移動さ​​れた場合、複合コンポーネントとして利用できます。ただし、ビュー内のコンポーネントを使用するには、各サブフォルダごとに異なる名前空間を使用する必要があります。

は、残念ながら、唯一の複合ライブラリー名いるので、動作しない、次のようなものを宣言することがあります。

<facelet-taglib version="2.0" 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-facelettaglibrary_2_0.xsd"> 

    <namespace>http://ourcompany.de/jsftags</namespace>  
    <composite-library-name>components/input</composite-library-name> 
    <composite-library-name>components/core</composite-library-name> 
    <composite-library-name>components/layout</composite-library-name> 
</facelet-taglib> 

は移動せず、当社の複合コンポーネントのすべてに同じ名前空間を使用する方法はありますそれらを1つのフォルダに入れますか?

答えて

0

コンポーネントを、入力やコアなどのフォルダ名で指定されたいくつかのサーブレット3.0 Webフラグメントに移動できます。これらのフラグメントのそれぞれには、サブフォルダMETA-INF/resources/yourBaseFolderNameがあります。フラグメントを1つのWebアプリケーションに結合すると、コンテナはコンテンツを1つのフォルダにマージし、共通の名前空間で対処できます。

関連する問題