カスタムコンポーネントでJavascriptを利用
JSFのカスタムコンポーネントの作り方を何回かにわたって紹介してきたけど、今回はJavascriptをカスタムコンポーネントから利用する方法を紹介します。
といっても、特別なことは何もないです。前回Rendererクラスを継承して自作のRendererを作成したと思いますが、このRendererクラスに次のようなアノテーションを付与するだけです。
@FacesRenderer(componentFamily="javax.faces.Input", rendererType="org.ui.Hoge") @ResourceDependency(library="javascript", name="my.js") public class HogeRenderer extends Renderer { ... }
@ResourceDependencyアノテーションがJavascriptを読み込む定義になっています。
この定義ではcontext-root/resources/javascript配下のmy.jsを読み込みます。
複数のJavascriptファイルを利用する場合は、@ResourceDependenciesアノテーションを利用して以下のように記述します。
@FacesRenderer(componentFamily="javax.faces.Input", rendererType="org.ui.Hoge") @ResourceDependencies({ @ResourceDependency(library="javascript", name="my.js"), @ResourceDependency(library="javascript", name="hoge.js") }) public class HogeRenderer extends Renderer { ... }
@ResourceDependenciesアノテーションの中に@ResourceDependencyアノテーションの定義を配列で定義するだけです。
そういえば、JSF2には組み込みのJavascriptファイルがあるんだけど、@ResourceDependencyで以下のようにすれば事前に組み込まれているjavascriptファイルをカスタムコンポーネントで利用可能ということか?
@ResourceDependency(library="javax.faces" name="jsf.js")
まあ、暇な時に試してみたいんだけど、暇な時間があまりない。