2006.07.05 株式会社四次元データ 鈴木 圭
JSP 11章 SimpleTagによるカスタムタグの作成
- 11.1. SimpleTagとは
- 11.2. SimpleTagへの移植
- 11.3. SimpleTagの使用
- 11.4. SimpleTagSupport
11.4. SimpleTagSupport
JSP2.0 では、前述の SimpleTag を簡単に実装するためのクラス javax.servlet.jsp.tagext.SimpleTagSupport も同時に追加されました。
SimpleTagSupport クラスとは、SimpleTag インタフェースのデフォルトの実装およびコンビニエンス・メソッド(※)を提供するクラスであり、SimpleTag を直接実装するよりも SimpleTagSupport クラスを継承して、必要な処理だけ再定義する方が作業量が少なく簡単です。
※コンビニエンス・メソッド:
特に新しい機能を追加するわけではないが、特定用途を行うために便利なメソッドのこと。
以下に SimpleTagSupport クラスの持つメソッドを一覧します:
- void doTag()
デフォルトの実装として、何も行わない空の実装を提供します。 - protected JspFragment getJspBody()
setJspBody() によって設定された JspFragment を返します。 - protected JspContext getJspContext()
setJspContext() によって設定された JspContext を返します。 - JspTag getParent()
setParent() によって設定された親タグを返します。 - void setJspBody(JspFragment jspBody)
ボディ部が存在した場合に、コンテナより呼ばれます。 - void setJspContext(JspContext pc)
JSPページで使用する、様々なリソース・データ等を管理する「javax.servlet.jsp.PageContext」を設定します。 - void setParent(JspTag parent)
親要素を設定します。 - static JspTag findAncestorWithClass(JspTag from, Class<?> klass)
与えられたクラス型に最も近いインスタンスを検索します。
この SimpleTagSupport を用いて先ほどの MySimpleTag と同じ機能を実装すると、次のようになります:
import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; public class MySimpleTag2 extends SimpleTagSupport { public void doTag() throws JspException, IOException { String string = new SimpleDateFormat("yyyy/MM/dd").format(new Date()); getJspContext().getOut().print(string); } }
setParent() や setJspContext() などは SimpleTagSupport が実装しているので、doTag() メソッドだけを実装すれば、先ほどの MySimpleTag と同じ機能を実現することができます。