JSF 2.0のカスタムタグ
JSF 2.0では、あらかじめ定義されたコンテンツをレンダリングするカスタムタグを作成することができます。カスタムタグは通常のJSFタグのように見え、 ”
ui:composition
“を使用してコンテンツをページに挿入します。
JSF 2.0でカスタムタグを作成するための要約を以下に示します。
-
Use:ui:compisition “タグを使用して、XHTMLで定義済みのコンテンツを作成する
ページ。
-
カスタムタグをタグライブラリ記述子で宣言します.
-
タグライブラリ記述子をweb.xmlに登録します.
カスタムタグの例
ページに2つの定義済みの送信ボタンとリセットボタンを挿入するカスタムタグを作成するガイド。
1.カスタムタグ
通常のXHTMLファイルを作成してカスタムタグを実装します。このタグでは、「ui:composition」タグを使用して提出ボタンとリセットボタンをグループ化します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<h:body>
<ui:composition>
<h:commandButton type="submit" value="#{buttonSubmitLabel}"/>
<h:commandButton type="reset" value="#{buttonResetLabel}"/>
</ui:composition>
</h:body>
</html>
2.タグライブラリ
タグライブラリディスクリプタファイルにカスタムタグの詳細を定義します。
-
namespace
– このタグライブラリの名前空間.
紛争を避ける。
-
tag-name
– カスタムタグ名. -
source
– カスタムタグの実装.-
WEB-INF \ mkyong.taglib.xml **
-
<?xml version="1.0"?>
<!DOCTYPE facelet-taglib PUBLIC
"-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
"http://java.sun.com/dtd/facelet-taglib__1__0.dtd">
<facelet-taglib>
<namespace>//facelets</namespace>
<tag>
<tag-name>button</tag-name>
<source>tags/com/mkyong/button.xhtml</source>
</tag>
</facelet-taglib>
3. web.xmlに登録する
web.xmlファイルにタグライブラリを登録します。
<!-- Load custom tag into JSF web application -->
<context-param>
<param-name>facelets.LIBRARIES</param-name>
<param-value>/WEB-INF/mkyong.taglib.xml</param-value>
</context-param>
4.カスタムタグを使用する
カスタムタグを使用するには、その名前空間を一番上に宣言し、それを通常のJSFタグのように使用する必要があります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:mkyong="//facelets"
>
<h:body>
<h1>Custome Tags in JSF 2.0</h1>
<mkyong:button
buttonSubmitLabel="Submit"
buttonResetLabel="Reset"/>
</h:body>
</html>
“mkyong:button”カスタムタグは、1つの送信ボタンと1つのリセットボタンをレンダリングします。
