7

すべての JSP は実行前にサーブレットに生成/変換されるため、Facelets にも当てはまりますか?

私は JSF 2.0 と Facelets を使用しており、サーブレットである可能性のある生成された Java コードを見たいと思っていました。

4

2 に答える 2

13

いいえ、Facelets ファイルはSAX パーサーを使用して XML ツリーに解析されます。XML ツリーはFacelet キャッシュに保存されます。XML ツリーは、ビューのビルド時UIComponentにアクセス可能なツリーに変換されFacesContext#getViewRoot()ます (実行時にトラバースできgetChildren()ます)。通常、コンポーネント ツリーは、独自のencodeXxx()メソッドまたは関連する にあるRendererで始まる HTML コードを生成しますUIViewRoot#encodeAll()

Facelets ファイルはクラス ファイルを生成しません。XML ツリーは、デフォルトでサーバーのメモリに保存されます。ただし、JSF 2.1 以降では、たとえばディスク ファイル システムに XML ツリーを格納するコードを記述できるカスタムFaceletCache実装を<facelet-cache-factory>指定できます (ただし、これは遅くなります)。faces-config.xml

ビューでを使用<ui:debug>して開くと、コンポーネント ツリーのテキスト表現が の後ろに表示されUIViewRootます。JSF/EL のデバッグ方法も参照してください。

以下も参照してください。

于 2012-11-01T11:31:57.280 に答える
1

まったく同じ方法ではなく、キャッシュされます。ただし、サーブレットコードは生成されません。

于 2012-11-01T09:37:57.603 に答える