36

JSF2.0以降、Faceletsビュー定義言語が優先されるビュー定義言語であり、レガシーフォールバックとして非推奨になっているJSPではないことがわかります。JSF2.0以降のビュー定義言語としてFaceletsがJSPよりも好まれる理由を理解したいですか?JSPには、Faceletsを採用するための主な推進ポイントであるテンプレート動作もあることを私は知っています。

PS:私はstackoverflowに関するこの投稿を読んでいますが、それが私の質問に答えるとは思いません。したがって、これを別の質問として投稿します。

4

2 に答える 2

45

確かに、JSPにはいくつかの テンプレート機能がありますが、JSFでJSPを使用する最大の欠点は、JSPがテンプレートテキストコンテンツに遭遇するとすぐに応答に書き込むのに対し、JSFはそれを使用して前処理/後処理を実行することです。JSF 1.0 / 1.1では、次のJSFコード

<h:outputText value="first"> second <h:outputText value="third"> fourth

を生成します

2番目4番目最初の3分の1

これは、JSF 1.0/1.1の時代に頭痛の種でした。開発者は、上記の例のように、すべての場所でsecondタグでテンプレートテキストをラップする必要があります。JSF 1.2は、JSPを実行する代わりに解析する改良されたビューハンドラーでこれを解決しましたが、JSP構文がXMLのように「整形式」ではないため、内部ではまだ非常に不器用でした。効率的なSAXベースのパーサーを使用できるように、XMLベースのビューテクノロジーが強く望まれていました。そして、Faceletsが誕生しました(Ken Paulsenの「JSFTemplating」の中で)。fourth<f:verbatim>

また、統合ELをJSPテンプレートテキストで使用できなかったため、との混合が#{}醜くなり、初心者にとっては直感的ではありませんでした。また、JSTLはJSP上のJSF 1.xで、ビュービルドタイムタグとして使用できない可能性があります。また、JSP構文は古くからあり、生のJavaコードをJSPに埋め込む可能性は、MVCのイデオロギーを破る非常に貧弱な慣習と見なされています。${}#{}<% %>

結局のところ、JSF / MVCの観点では、JSPは単純に醜くてひどいものであり、Faceletsは単純にクリーンで素晴らしいものです。

于 2012-10-26T19:22:42.993 に答える
12

インターネットで次のような答えを見つけました。

JSFToolboxドキュメントの第3章

JSPコンパイル時のオーバーヘッド

JSPページを編集、保存、およびリロードするたびに、サーバーのJSPコンパイラがJavaサーブレットコードを生成し、それをサーブレットにコンパイルします。これはJSP変換プロセスと呼ばれ、サーバーのパフォーマンスにもよりますが、通常は1〜2秒かかります。

FaceletsXMLコンパイル

JavaServer Pagesとは異なり、Faceletsページはサーブレットにコンパイルされません。FaceletsページはXMLに準拠しているため、Faceletsフレームワークは高速のSAXベースのコンパイラを使用してビューを構築します。また、Faceletsは、ページへの変更をすぐに検出してレンダリングするように構成できるため、JSF開発サイクルがスピードアップします。

49ページのIanHlavatsの「JSF1.2コンポーネント」を予約してください

JSFアプリケーションの開発中に、JSFページに変更を加えることがよくあります。その結果、JSPページが頻繁に再コンパイルされ、このコンパイル時のオーバーヘッドが増える可能性があります。

フェイスレットページは、サーブレットにコンパイルされることのない単純なXMLドキュメント(XHTM1ページ)であり、ビューのUIコンポーネントツリーを構築するSAXベースのコンパイルプロセスを使用します。したがって、Faceletsは、JSP変換のオーバーヘッドがないため、JSPに比べて高速です。

于 2014-10-16T07:32:49.520 に答える