目次へ

2006.07.05 株式会社四次元データ 鈴木 圭

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 と同じ機能を実現することができます。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp