すべての JSP は実行前にサーブレットに生成/変換されるため、Facelets にも当てはまりますか?
私は JSF 2.0 と Facelets を使用しており、サーブレットである可能性のある生成された Java コードを見たいと思っていました。
すべての JSP は実行前にサーブレットに生成/変換されるため、Facelets にも当てはまりますか?
私は JSF 2.0 と Facelets を使用しており、サーブレットである可能性のある生成された Java コードを見たいと思っていました。
いいえ、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 のデバッグ方法も参照してください。
まったく同じ方法ではなく、キャッシュされます。ただし、サーブレットコードは生成されません。