目次へ

9. 親子タグ

親子タグとは、連動して1つの処理を行う、包含関係にある複数のタグのことです。この章では親子タグの例として、以下のようなデータベースの処理を行うものを考えます。

<%@ taglib uri="http://www.techscore.com/tags/example" prefix="example" %>
...
<example:Transaction jdbcURL="jdbc:postgresql:Training" user="postgres" password="">
  <example:Update>insert into product values(250,'Mist','compact car','150')</example:Update>
  <example:Update>update product set price=900 where p_num=111</example:Update>
</example:Transaction>
...

「Transaction」タグはタグで囲まれた範囲を、一連のトランザクションとして処理するものです。属性で指定されたDBへの接続・切断処理と、コミットを行います。「Update」タグはボディ部で指定されたSQL文を処理します。例ではJDBCの章で用いられているPostgreSQLの「product」テーブルを対象に接続設定・SQL文を記載しています。適当なものに置き換えて読み替えてください。

9.1. TLDの設定

タグハンドラクラスの実装から先に進めても良いですが、ここでは先にTLDの設定を行う事にします。まず初めに「Transaction」タグの設定です。

...
  <tag>
    <name>Transaction</name>
    <tag-class>TransactionTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
      <name>jdbcURL</name>
      <required>true</required>
    </attribute>
    <attribute>
      <name>user</name>
      <required>true</required>
    </attribute>
    <attribute>
      <name>password</name>
      <required>true</required>
    </attribute>
  </tag>
...

タグハンドラクラスの名前は「TransactionTag」としています。ボディ部には「Update」タグや他のものが含まれますので、<body-content>は「JSP」とします。属性はJDBCを介してDBに接続する際に必要な3つの引数、「jdbcURL」「user」「password」を設定します。全て必須ですので<required>は「true」とします。

続いて「Update」タグの設定です。

...
  <tag>
    <name>Update</name>
    <tag-class>UpdateTag</tag-class>
    <body-content>Tagdependent</body-content>
  </tag>
...

タグハンドラクラスの名前は「UpdateTag」、ボディ部にはSQL文のみが記載されるので<body-content>は「Tagdependent」としています。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp