JSTLコア・ライブラリ - <c:url>タグ

 適切なリライティング・ルールが適用されたURLを作成します。

構文

構文1: ボディ・コンテンツなし

<c:url value=”value” [context=”context ”]
     [var=”varName”] [scope=”{page|request|session|application}”]/>

構文2: ボディ・コンテンツに問合せ文字列パラメータを指定

<c:url value=”value” [context=”context ”]
     [var=”varName”] [scope=”{page|request|session|application}”]>
  <c:param> subtags
</c:url>

属性

value
処理されるURL。
context
外部コンテキストに属する相対URLリソースを指定する際のコンテキストの名前。
var
処理されるURLを格納するエクスポート・スコープ変数の名前。スコープ変数の型はStringです。
scope
varのスコープ。

説明

<c:url>はURLを処理し、必要に応じてリライトします。リライトされるのは相対URLのみです。外部URLがリライトされセッションIDが公開されてしまう状況を避けるために、絶対URLはリライトされません。したがって、クライアント開発者がセッションを追跡する場合は、<c:url>で相対URLのみを使用し、ローカル・リソースにリンクする必要があります。

リライトは、サーブレットAPIのencodeURL()メソッドをコールして実行する必要があります。

エンコードする必要のある文字(空白など)がURLに含まれている場合は、ユーザーがエンコードを行ってください。

URLは、絶対URL(http://server/context/page.jspなど)、またはJSP 1.2のJSP.2.2.1「Relative URL Specification」で定義された相対URLのいずれかであることが必要です。そのため、スラッシュで始まるコンテキスト・パス(/page2.jspなど)をURLに付加し、URLがクライアント・ブラウザで正しく解釈されるようにする必要があります。

context属性を使用すれば、外部コンテキストのURLを指定できます。指定するURLは、/で始める必要があります(コンテキスト相対URLのため)。コンテキスト名も/で始める必要があります(これはコンテキストを識別するための標準的な方法です)。

このアクションで作成したURLはパス・パラメータとしてセッション情報を含んでいるため、サーブレットAPIのRequestDispatcherで使用すると、失敗する可能性があります。したがって、リライトされたURLのコンシューマは、RequestDispatcherをコールする前にセッションID情報を削除する必要があります。この問題は、<c:import>で適切に処理できます。

デフォルトでは、現在のJspWriterにURL処理の結果が書き込まれます。var属性およびscope属性で定義したJSPスコープ変数として結果をエクスポートすることも可能です。

<c:param>サブタグを<c:url>のボディに指定して、URL問合せ文字列パラメータに追加することもできます。この場合、URL問合せ文字列パラメータは必要に応じて正しくエンコードされます。


JDeveloperのJSTLタグ・ライブラリについて
リファレンス: JavaServer Pages標準タグ・ライブラリ(JSTL)

 

Copyright © 1997, 2004, Oracle. All rights reserved.