31

Faceletsは、jsfc属性を使用して、HTML要素を関連するJSFコンポーネントに変換します。これは、ビジュアルデザインツールを使用してビューを作成できるため、ラピッドプロトタイピングにかなり役立ちます。しかし、最近、 Cay Horstmannによるこのブログ投稿を発見しました。彼は、 h:dataTableなどの複雑なコンポーネントと一緒にjsfcを使用することに無駄を費やしています。

Cay Horstmannは私のお気に入りのJavaの本を何冊も執筆しているので、これは私を驚かせました。しかし、問題の範囲/性質を判断しようとしたときに、私のGoogle-fuスキルはゼロの結果をもたらしました。ただし、jsfcが好きであるEd Burnsによる最近の投稿を除きます(そして彼は結局JSFの共同仕様のリーダーです) 。だから私の質問は単純です、Faceletsでjsfcを使用することをお勧めしますか?そうでなければ、それがもたらす問題は何ですか。

4

1 に答える 1

37

あなたが言ったように、このjsfc属性は、HTMLプロトタイプをJSFページに「変換」する必要がある場合に本質的に役立ちます。たとえば、HTML入力テキストがある場合:

<input type="text" .../>

jsfcこのHTMLコンポーネントをJSFコンポーネントに変換するために、属性を追加できます。

<input type="text" jsfc="h:inputText" .../>

これは、次のJSFコードを作成するのと同じです。

<h:inputText .../>

ここまたはここのFaceletsのドキュメントに記載されているように、この属性jsfcを使用してFaceletsコンポーネントを「マップ」することもできます。たとえば、HTMLコードの一部を削除できます。

<span jsfc="ui:remove">
This won't be compiled either <h:outputText value="#{foo.bar}"/>
</span>

この属性を使用してテーブルを作成することもできます。

<table>
    <tr jsfc="ui:repeat" value="#{dept.employees}" var="emp" class="#{emp.manager ? 'mngr' : 'peon'}">
       <td>#{emp.lastName}</td>
       <td>#{emp.firstName}</td>
    </tr>
</table>

この例では、このテーブルをh:datatableコンポーネントにリンクしていませんが、JSFコンポーネントを使用しui:repeatて行を反復処理し、HTMLコードでテーブルを作成しています。

ご覧のとおり、このjsfc属性を使用して、JSFページで1つのHTMLコンポーネントを1つのJSFコンポーネントに変換できます。したがって、データテーブルなどの複雑なコンポーネントの場合は、いくつかの回避策を使用する必要があります(コンポーネントui:repeatの代わりにを使用h:datatable)。

もう1つのポイントは、RichFaces、IceFaces、Tomahawkなどによって提案されたコンポーネントなどのサードライブラリコンポーネントを使用できなくなることです。そして、これらのライブラリは本当にJSFの関心事の1つです。

要約jsfcすると、HTMLプロトタイプをJSFアプリケーションに変換するのに役立ちます。基本的には、概念実証の作成や一般的なUIの設計に役立ちます。ただし、「実際の」開発が開始されたら、このコンポーネントを回避する方がよいと思います...

于 2010-02-26T07:17:34.537 に答える