JSPタグファイルは楽チン

JSP2.0は、理解しやすく、使いやすいなあと常々思っています。
今日は、JSP2.0からの新機能で、非常に便利だが、あまり知られていない「タグファイル」について簡単に紹介します。

従来からのJSPでは、「カスタムタグ」という機能で、JSPでのHTMLコードの再利用が可能でした。
しかし、このカスタムタグは作るのが面倒だったため、フレームワーク作成以外では、あまり流行っていなかったです。

今回紹介するタグファイルは、このカスタムタグと同等の機能を持ちつつ、作成を簡単にしたものです。
どれぐらい簡単かというと、これぐらい違います。

カスタムタグ タグファイル
タグハンドラクラスの作成
TLDファイルの作成
web.xmlでのTLD宣言 任意
taglibディレクティブの記述
tagファイルの作成

タグファイルの場合は、カスタムタグで使用するTLDファイルが必要ないです。
代わりにタグファイル自身に、同様のTLDファイルで記述するような属性の定義が記述できます。

タグファイルの作成

方法はとても簡単です。なぜなら、基本的な記述の仕方はJSPと同じだからです。
この点においてもカスタムタグと比べて記述が楽です。(カスタムタグの場合は、JSPWriterオブジェクトを取得して、println()などでHTMLコードを出力していた)

ここでは、掛け算をするためのタグファイルを作成します。使い方としては、次のような使い方を想定します。
<tags:sample value1="3" value2="5"/>
このように記述すると、3*5=15と表示するようにします。
簡単なのですぐにコードを示します。

(sample.tag)


<%@ tag pageEncoding="utf-8"%>
<%@ attribute name="val1" type="java.lang.Integer" required="true"%>
<%@ attribute name="val2" type="java.lang.Integer" required="true"%>
<b>${val1} * ${val2} = ${val1 * val2}</b>

これをsample.tagというファイル名にして、WEB-INF/tagsディレクトリに置くことにします。
読めばわかるように、JSPと同じ記法で記述できます。
<%@ attribute %>というのが、このタグの属性で、2つの属性を持つことが読み取れます。

JSPからの利用

JSPから使用するには、カスタムタグと同じようにtaglibディレクティブの宣言を必要とします。
タグファイルの場合は、カスタムタグと違って、tagdir属性を使ってタグファイルを格納したフォルダを指定します。
したがって、JSPはこんな感じになります。

(sample.jsp)


<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<html>
  <body>
  	<tags:sample val1="3" val2="5" />
  </body>
</html>

sample.tagで指定したように、2つの属性val1,val2を指定します。これだけ。
タグハンドラクラスのコンパイルも、TLDファイルの作成も不要です。なんて便利なんでしょう。
sample.tagというファイル名だから、<tags:sample/>というタグ名になっています。

今回紹介したのはタグファイルの、もっとも基本的な部分です。
さらに詳細な使い方は、こちらが参考になります。

タグファイル JSP -TECHSCORE-
Tomcat5の新機能第2回:EL式とタグファイル – STACK(*)


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)