JSFのビュー(JSP)に入り込んでしまったロジックは、スクリプトレットとして表現されます。スクリプトレットはJSPの可読性を著しく落としてしまうため、できるだけ使用を避ける必要があります。
スクリプトレットを避ける手段として用いられるのが、JSPのカスタムタグです。カスタムタグを作成するには、次のファイルを編集、もしくは作成する必要があります。
- タグハンドラクラス
- taglibディスクリプタ
- カスタムタグを記述したJSP
表1:カスタムタグを作成するのに非常なファイル
次に示すのは、name属性に記述した名前を使って「こんにちは〜さん」と表示する非常に単純なカスタムタグを作成する例です。
タグハンドラクラス
public class HelloTag extends SimpleTagSupport {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void doTag() throws JspException, IOException {
String message = "こんにちは " + name + "さん";
getJspContext().getOut().write(message);
}
}
taglibディスクリプタ
<tag>
<description>HelloTag</description>
<name>hello</name>
<tag-class>com.example.jsf.HelloTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>true</required>
</attribute>
</tag>
JSPにてカスタムタグを使う
<%@ taglib uri="/WEB-INF/my-taglib.tld" prefix="my" %>
<my:hello name="田中"/>
たったこれだけの機能を実現するために、これほどの記述量があるカスタムタグの作成は、面倒であるといわざるを得ません。
また、カスタムタグに似た機能として、カスタムコンポーネントと呼ばれるUIコンポーネントを独自に作成する機能があります。カスタムタグを使って実現されているため、カスタムコンポーネントを作成するのもカスタムタグ同様に簡単ではありません。
|