カスタムコンポーネントで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")

まあ、暇な時に試してみたいんだけど、暇な時間があまりない。