Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > オープンソース > Taglibs −4.Standard Taglibs:coreタグライブラリ
更新日:2012/3/10
Taglibs−4.Standard Taglibs:coreタグライブラリ
ここでは、Standard Taglibsで定義されている式言語(Express Language)について解説します。JSP2.0からはStandard Taglibsだけでなく、JSPでも式言語が利用できるようになっています。

実行環境
・WindowsXP Home Edition
・J2SDK 1.4.2_04
・Tomcat 5.0.18
・Standard Taglib 1.1.0
coreタグライブラリの一覧

coreタグライブラリで定義されているタグを以下に記載します。

タグ
内容
値を表示する。
変数に値を設定する。
リソース有効利用の観点から、使用しなくなった変数を削除する。
forループと同様の繰り返し処理を行う。また、配列、コレクションなどのオブジェクトの集合を持つオブジェクトから順番にオブジェクトを処理する繰り返し処理を行う。
文字列を、指定された区切り文字(カンマ、タブなど)に従って分け、分けられた文字列を順次処理する。StringTokenizerクラスを同様の処理を行う。
if文と同様の条件処理を行う。
switch文と同様の条件処理を行う。
例外が発生した場合、例外をキャッチし、引き続き処理を実行する。
外部のコンテンツ(JSP、HTML、画像など)を該当箇所にインポートする。
パラメータをURLエンコードする。
URLのリダイレクトを行う。
<c:import>、<c:url>、<c:redirect>で使用するパラメータを設定する。
coreタグライブラリの使用例
<c:out>

構文1
<c:out value=”値” [escapexml=”{true|false}”] [default=”デフォルト値”] />

構文2
<c:out value=”値” [escapeXml=”{true|false}”]>
   デフォルト値
</c:out>

属性
属性
内容
必須
value
出力する値、変数
default
value属性がNullであった場合に表示する値
×
escapeXml
出力する値に<、>、&、'、"が含まれていた場合に、該当するコード(<、>、&、'、")に置き換えて表示するか、そのまま表示するかを指定する。デフォルトでは、置き換えて表示する(true)。
×
サンプルコード: value属性に指定されたcustomerオブジェクトの各プロパティを出力しています。各プロパティの値がNullの場合は、default属性で指定されている値が表示されます。
<tr>
  <td><c:out value="${customer.lastName}"/></td>
  <td><c:out value="${customer.phoneHome}"
             default="no home phone specified"/></td>
  <td>
    <c:out value="${customer.phoneCell}" escapeXml="false">
      <font color="red">no cell phone specified</font>
    </c:out>
  </td>
</tr>
<c:set>

構文1
<c:set value=”値” var=”変数名” [scope=”{page|request|session|application}”]/>

構文2
<c:set var=”変数名” [scope=”{page|request|session|application}”]>
  値
</c:set>

構文3
<c:set value=”値” target=”オブジェクト名” property=”プロパティ名”/>

構文4
<c:set target=”オブジェクト名” property=”プロパティ名”>
   値
</c:set>

属性
属性
内容
必須
var
値が設定される変数
×
value
設定される値
×
target
プロパティに値を設定する場合に、そのプロパティを持つオブジェクトを指定する。オブジェクトはsetterメソッドを持つJavaBeansオブジェクトか、Mapオブジェクトでなければならない。
×
property
値が設定されるオブジェクトのプロパティ名
×
scope
var属性のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード:<FORM>タグなどで送信されたパラメータ”firstName”をparamオブジェクトで取得し、変数firstNameに設定しています。
<c:set var="firstName" value="${param.firstName}" />
サンプルコード2:変数firstNameをセッションスコープで保存しています。
<c:set var="firstName" value="${firstName}" scope="session" />
サンプルコード3:セッションスコープの変数firstNameを、変数localFirstNameに設定しています。
<c:set var="localFirstName" value="${sessionScope.firstName}" />
サンプルコード4: <c:set>タグで囲まれた範囲の実行結果をvar属性で指定したcustomerTable変数に設定しています。
<c:set var="customerTable" scope="application">
  <table border="1">
    <c:forEach var="customer" items="${customers}">
      <tr>
        <td>${customer.lastName}</td>
        <td>
          <c:out value="${customer.address}"
                 default="no address specified"/>
        </td>
        <td>
          <c:out value="${customer.address}">
            <font color="red">no address specified</font>
          </c:out>
        </td>
      </tr>
    </c:forEach>
  </table>
</c:set>
<c:remove>

構文1
<c:remove var=”変数名” [scope=”{page|request|session|application}”]/>

属性
属性
内容
必須
var
削除する変数
scope
var属性のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード: セッションスコープの変数を取得し、何らかの処理を行った後、リソースの有効利用の観点から不要になった変数を削除しています。
<%-- セッションスコープの変数の取得 --%>
<c:set var="handleName" value="${sessionScope.handleName}" />

-----何らかの処理-----

<%-- 不要なセッションスコープの変数を削除 --%> 
<c:remove var="handleName" scope="session" />
<c:forEach>

構文1
<c:forEach[var=”変数名”] items=”オブジェクト名” [varStatus=”ステータス変数名”] [begin=”開始値”] [end=”終了値”] [step=”繰返し処理レベル”]>
   繰返し実行される処理
</c:forEach>

構文2
<c:forEach [var=”変数名”] [varStatus=”ステータス変数名”] begin=”開始値” end=”終了値” [step=”繰返し処理レベル”]>
   繰返し実行される処理
</c:forEach>

属性
属性
内容
必須
items
配列、Mapなどオブジェクトの集合を持つオブジェクトを指定する。
×
begin
items属性が指定されている場合に、どのオブジェクトから繰り返し処理を始めるか指定する。items属性が指定されていない場合は、指定された値から繰り返し処理を開始する。
×
end
items属性が指定されている場合に、どのオブジェクトで繰り返し処理を終了するか指定する。items属性が指定されていない場合は、指定された値で繰り返し処理を終了する。
×
step
繰り返し処理の繰り返すレベルを指定する。
×
var
繰り返し処理される値が代入される変数。
×
varStatus
繰り返し処理のステータスが代入される変数。ステータスにはindex(0から始まるループ回数)、count(1から始まるループ回数)、current(カレントのオブジェクト)、first(ループ開始フラグかどうか)、last(ループ終了フラグかどうか)、begin(begin属性で指定された値)、end(end属性で指定された値)、step(step属性で指定された値)があります。
×
サンプルコード: 1から10までの値を順番に変数iに代入し、表示しています。
<c:forEach var="i" begin="1" end="10">
  ${i} ・
</c:forEach>
サンプルコード2:items属性で指定されたcumtomersオブジェクトを繰り返し処理している間のステータスの値を表示しています。
<c:forEach var="customer"
           items="${customers}" varStatus="status">
  <tr>
    <td><c:out value="${status.index}"/></td>
    <td><c:out value="${status.count}"/></td>
    <td><c:out value="${status.current.lastName}"/></td>
    <td><c:out value="${status.current.firstName}"/></td>
    <td><c:out value="${status.first}"/></td>
    <td><c:out value="${status.last}"/></td>
  </tr>

  <c:if test="${status.last}">
    <c:set var="count" value="${status.count}"/>
  </c:if>
</c:forEach>
<c:forTokens>

構文1
<c:forTokens items="文字列" delims="セパレータ" [var="変数名"] [varstatus="ステータス変数名" [begin="開始値" [end="終了値" [step="繰返し処理レベル">
   繰返し実行される処理
</c:forTokens>

属性
属性
内容
必須
items
繰り返し処理する文字列を指定する。
delims
items属性で指定された文字列を分けるセパレータ(カンマ、タグなど)を指定する。
begin
繰り返し処理を開始するindexを指定する。
×
end
繰り返し処理を終了するindexを指定する。
×
step
繰り返し処理の繰り返すレベルを指定する。
×
var
繰り返し処理される値が代入される変数。
×
varStatus
繰り返し処理のステータスが代入される変数。ステータスにはindex(0から始まるループ回数)、count(1から始まるループ回数)、current(カレントのオブジェクト)、first(ループ開始フラグかどうか)、last(ループ終了フラグかどうか)、begin(begin属性で指定された値)、end(end属性で指定された値)、step(step属性で指定された値)があります。
×
サンプルコード:items属性でしてされた文字列を、delims属性のセパレータに従い区分けし、その値を表示しています。
<c:forTokens var="i" items="one,two,three,four,five"
             delims="," begin="3" end="1"
             varStatus="status">

  index: ${status.index} ・
  count: ${status.count} ・
  item: ${i}

</c:forTokens>
<c:if>

構文1
<c:if test=”判定式” var=”変数名” [scope=”{page|request|session|application}”]/>

構文2
<c:if test=”判定式” [var=”変数名”] [scope=”{page|request|session|application}”]>
   判定式がtrueの場合に実行される処理
</c:if>

属性
属性
内容
必須
test
if文の処理を実行するかどうかを判定するtrue、falseを返す変数、式を指定する。
var
test属性で実行された結果の値(true、false)を代入する変数。
×
scope
var属性のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード:customerオブジェクトが持つ、addressオブジェクトのcoountryプロパティの値がUSAの場合にcustomerオブジェクトを表示しています。
<c:if test="${customer.address.country == 'USA'}">
  ${customer}<br>
</c:if>
<c:choose>、<c:when>、<c:otherwise>

構文1
<c:choose>
   <c:when test=”判定式”>
     判定式がtrueの場合に実行される処理
   </c:when>
   ・・・・・・・・・・・・・・・・・・・・・・
   ・・・・・・・・・・・・・・・・・・・・・・
   <c:otherwise>
     どのwhenの判定式もtrueでなかった場合に実行される処理
   </c:otherwise>
</c:choose>

属性
属性
内容
必須
test
when文の処理を実行するかどうかを判定するtrue、falseを返す変数、式を指定する。
サンプルコード:customerオブジェクトが持つ、addressオブジェクトのcoountryプロパティの値に従って、font colorを変える処理です。すべてのの判定式でtrueが返されなかった場合はが実行されます。
<c:choose>
  <c:when test="${customer.address.country == 'USA'}">
    <font color="blue">
  </c:when>
  <c:when test="${customer.address.country == 'Canada'}">
    <font color="red">
  </c:when>
  <c:otherwise>
    <font color="green">
  </c:otherwise>
</c:choose>
<c:catch>

構文1
<c:catch [var=”変数名”]>
  例外が発生する可能性のある処理
</c:catch>

属性
属性
内容
必須
var
発生した例外が代入される変数
×
<c:import>

構文1
<c:import url=”インポートするコンテンツのURL” [context=”コンテキストのURL”] [var=”変数名”] [scope=”{page|request|session|application}”] [charEncoding=”エンコード方式”]>
   インポートされるコンテンツに関する処理
   <c:param>タグの処理
</c:import>

構文2
<c:import url=”インポートするコンテンツのURL” [context=”コンテキストのURL”] varReader=”Reader型の変数名” [charEncoding=”エンコード方式”]>
   Reader型の変数に関する処理
</c:import>

属性
属性
内容
必須
url
インポートする外部コンテンツのURL。絶対URLでも相対URLでも指定可能。
var
インポートした外部コンテンツが代入される変数。
×
scope
var属性のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
varReader
インポートした外部コンテンツが代入される変数。代入された変数を他のアプリケーションから読み込めるように変数の型はReader型になる。動画、音声など特殊なデコード処理が必要な外部コンテンツを表示するときに使用する。
×
context
外部コンテンツのURLに属するコンテキストを指定する。
×
charEncoding
インポートする外部コンテンツのエンコード方式を指定する。
×
サンプルコード:url属性で指定した外部コンテンツをvar属性で指定した変数に代入しています。
<c:import var="cnn" url="http://www.cnn.com/cnn.rss"/>
<c:url>

構文1
<c:url value=”URLエンコードされるURL” [context=”コンテキストのURL”] [var=”変数名”] [scope=”{page|request|session|application}”]/>

構文2
<c:url value=”URLエンコードされるURL” [context=”コンテキストのURL”] [var=”変数名”] [scope=”{page|request|session|application}”]>
   <c:param>タグの処理
</c:url>

属性
属性
内容
必須
var
URLエンコードされた値が代入される変数。
×
scope
var属性のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
value
URLエンコードされるURLを指定する。
×
context
URLに属するコンテキストを指定する。
×
サンプルコード:value属性で指定したURLと<param>タグで指定した値でURLエンコーディングを行います。URLエンコーディングされた値は「base?param=ABC」になります。
<tr>
  <td>"base", param=ABC</td>
  <td>
    <c:url value="base">
        <c:param name="param" value="ABC"/>
    </c:url>
  </td>
</tr>
<c:redirect>

構文1
<c:redirect url=”リダイレクト先のURL” [context=”コンテキストのURL”]/>

構文2
<c:redirect url=”リダイレクト先のURL” [context=”コンテキストのURL”]/>
   <c:param>タグの処理
</c:redirect>

属性
属性
内容
必須
url
リダイレクト先のURLを指定する。
×
context
URLに属するコンテキストを指定する。
×
<c:param>

構文1
<c:param name=”パラメータ名” value=”パラメータ値”/>

構文2
<c:param name=”パラメータ名”/>
   パラメータ値
</c:param>

属性
属性
内容
必須
name
値を代入するパラメータ名を指定する。
value
パラメータ名に代入する値を指定する。
×



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道