SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

WTPではじめるサーバサイドJava入門

サーバサイドJava入門 カスタムタグの使い方

第7回 カスタムタグの定義方法と呼び出し方

TLDのソースコードを記述する

 では、「mytag.tld」のソースコードを以下のように書き換えて保存してください。これが今回作成するタグを利用するための情報です。

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0"
  xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
                      web-jsptaglibrary_2_0.xsd">
  <tlib-version>1.0</tlib-version>
  <short-name>mytag.tld</short-name>
  <uri>/WEB-INF/mytag.tld</uri>
  <tag>
    <name>MyTag</name>
    <tag-class>jp.codezine.MySimpleTag</tag-class>
    <body-content>empty</body-content>
  </tag>
</taglib>

 タグライブラリに関する記述は、<taglib>というタグの中に記述します。この中に<tag>というタグを使って、使用するタグの情報を記述します。このタグ内に書く内容について整理をしておきましょう。

<tag>
  <name>タグ名</name>
  <tag-class>タグに使用するクラス</tag-class>
  <body-content>ボディとなるコンテンツの指定</body-content>
</tag>

 <name>によるタグ名は、実際にタグとしてJSP内から利用する際に使用されます。<tag-class>は、文字通りタグの内容を実装しているクラスの指定です。3番目の<body-content>はボディ部分(開始タグと終了タグの間の部分)に置かれる値に関する指定です。「empty」は、ボディ部分に値がないことを示します。

 この例では、jp.codezine.MySimpleTagというクラスを「MyTag」というタグ名で使用するように指定していることがわかります。後はMySimpleTagクラスを定義すれば、カスタムタグができあがるというわけです。

タグ用クラスの作成

 では、続いてクラスを作成しましょう。WTPにはタグ用のクラスを作成するための機能はありません。ごく一般的なクラスとして作成をします。ここでは、jp.codezineパッケージに「MySimpleTag」というクラスを作成することになります。

 では、[ファイル]-[新規]-[その他]メニューを選び、ウィザードの選択画面で「クラス」を選択しましょう。

新規作成ウィザードの選択画面で「クラス」を選ぶ。
新規作成ウィザードの選択画面で「クラス」を選ぶ。

 Javaクラスの設定画面が現れます。ここで、作成するタグクラスの内容についての設定を行います。

設定項目設定値
ソース・フォルダーmyweb/src
パッケージjp.codezine
エンクロージング型OFF
名前MySimpleTag
修飾子publicをON
スーパークラスjavax.servlet.jsp.tagext.SimpleTagSupport
インターフェースOFF
作成するメソッド・スタブの選択継承された抽象メソッドのみON
作成するクラスに関する情報を入力する。
作成するクラスに関する情報を入力する。

 これで、「MySimpleTag」クラスが作成されます。続いて、作成したクラスにメソッドを実装しましょう。[ソース]-[メソッドのオーバーライド/実装]メニューを選び、現れたダイアログから、オーバーライドするメソッドとして「doTag」を選び、[OK]ボタンをクリックしてください。

ダイアログからdoTagをONにし、オーバーライドする。
ダイアログからdoTagをONにし、オーバーライドする。

 これで、javax.servlet.jsp.tagext.SimpleTagSupportを継承し、doTagメソッドをオーバーライドした「MySimpleTag」クラスのソースコードが作成されました。後は、doTagメソッドに、実際にタグとして使われた際の処理を書くだけです。import文などもありますので、全ソースコードを掲載しておきましょう。

package jp.codezine;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class MySimpleTag extends SimpleTagSupport {

  public void doTag() throws JspException, IOException {
    super.doTag();
    Locale.setDefault(new Locale("ja","JP","JP"));
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat format = new SimpleDateFormat("GGGGyyyy年M月d日");
    JspWriter out = this.getJspContext().getOut();
    out.println("<strong>");
    out.println(format.format(cal.getTime()));
    out.println("</strong>\n");
  }
}

次のページ
SimpleTagSupportの働き

この記事は参考になりましたか?

WTPではじめるサーバサイドJava入門連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1526 2007/07/30 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー