16 タグ・テクノロジを使用したWebサイト開発
下位互換性のため、Oracle WebCenter Sitesでは、Webサイトの開発用に引き続きレガシー・タグ・テクノロジを提供しています。コーディングはWebCenter SitesタグおよびJavaメソッドで可能で、テンプレートにはXMLおよびJSPを使用できます。
レガシーWebCenter Sitesタグ・テクノロジの詳細は、次の項を参照してください。
-
<a href="website-development-tag-technologies.html#GUID-9D1BF05F-C11C-4223-A572-335AE8B828EF" title='Use the hexadecimal character representation of special (non-alphanumeric) characters in your XML or JSP instead of the special characters themselves. For example, to specify a space as part of a variable value, you can use this line:
特殊文字の値について
ノート:
新しいテクノロジの詳細は、「MVCフレークワークおよびAPIを使用したWebsサイト開発」を参照してください。
16.1 コーディング言語の選択について
HTML、XML、JSP、CSS、JavaScriptなどいくつかのスクリプト言語およびマークアップ言語を使用して、エレメントおよびテンプレートを記述できます。ただし、WebCenter SitesはXMLおよびJSPのみを評価します。作成するエレメントまたはテンプレートの役割に基づいて、コーディング言語やマークアップ言語を選択してください。
XMLまたはJSPは、新聞記事など変更される可能性があるコンテンツを表示するエレメントに適しています。その理由は、このようなエレメントはロジックを使用してコンテンツをWebCenter Sitesデータベースから取得するため、WebCenter SitesのXMLタグまたはJSPタグを使用して管理されるからです。
ページ・レイアウトにはHTMLとXMLを使用し、ロジックにはJSPとJavaを使用するのが一般的です。WebCenter SitesではJava APIも用意されており、コーディング言語としてJSPを選択した場合は、このAPIをWebCenter SitesのJSPタグと組み合せて使用します。
この表は、各言語の最適な使用ケースを示しています。
表16-1 コーディング言語の使用
コード | 使用するケース |
---|---|
|
エレメントの大部分がテキストで構成されており、ループや条件分岐がほとんど含まれていません。 |
|
|
XMLまたはJSPで記述されたエレメントは任意のタイプのエレメントをコールできますが、XMLとJSPを同じエレメント内に混在させることはできません。たとえば、XMLまたはJSPで記述されたエレメントは、HTML、XMLまたはJSPで記述された別のエレメントをコールできます。ただし、HTMLで記述されたエレメントは、XMLまたはJSPで記述されたエレメントをコールすることはできません。
16.2 Oracle WebCenter Sitesのコンテキストについて
Oracle WebCenter Sitesプロジェクトは、Oracle WebCenter Sitesコンテキスト内にコーディングします。WebCenter Sitesのコンテキストでは、WebCenter Sitesを構成するJavaサーブレットにアクセスできるとともに、WebCenter Sitesの機能へのアクセスを可能にするメソッドとタグを持つWebCenter Sites Javaオブジェクトにアクセスできます。
どの言語を使用してプロジェクトをコーディングする場合でも、WebCenter Sitesのコンテキスト内でコーディングします。WebCenter SitesのXMLタグとJSPタグは、WebCenter SitesのJavaオブジェクト用の簡単に使用できるインタフェースを提供するため、Javaの経験がほとんどまたはまったくないWebデザイナでも、WebCenter SitesのWebページを作成できます。
16.2.1 ICSオブジェクト
Oracle WebCenter Sitesのためにコーディングしている場合は、Interface to WebCenter Sites (ICS)オブジェクトのメソッドとタグに頻繁にアクセスします。ICSオブジェクトは、WebCenter Sitesの中核機能のいくつかをカプセル化して、WebCenter Sitesツリーを制御するサーブレット(TreeManagerサーブレット)と、データベースへのデータ入力を制御するサーブレット(CatalogManagerサーブレット)へのアクセスを可能にします。
ICSのメソッドとタグを使用して、変数を作成および表示したり、if/then
文を使用して、指定された条件に基づいてタスクを実行することもできます。ICSオブジェクトのメソッドおよびタグの詳細は、『Oracle WebCenter Sitesリファレンス・タグ・リファレンス』を参照してください。
ノート:
ICSオブジェクトに格納されるオブジェクトは、別のスレッドで行われた変更に対して脆弱になります。したがって、ICSオブジェクトがスレッド・セーフで使用されていることを確認する必要があります。16.2.2 FTCSタグ
WebCenter Sitesのそれぞれのエレメントやテンプレートの先頭と末尾には、ftcs
タグが配置されています。このタグは、WebCenter Sitesのコンテキストを作成し、開始と終了のftcs
タグの内側に含まれているコードがWebCenter Sitesのタグを格納してICSメソッドにアクセスすることを、WebCenter Sitesに通知します。
WebCenter Sitesユーザー・インタフェースまたはOracle WebCenter Sites Explorerツールを使用して作成したエレメントとテンプレートには、開始と終了のftcs
タグが標準ディレクティブの後ろに追加されます。コーディングは、開始と終了のftcs
タグの内側で行う必要があり、これらのタグの外側にコードがあってもWebCenter Sitesでは認識されません。
他の方法を使用してエレメントとテンプレートのコードを作成する場合は、ディレクティブの後ろに開始ftcs
タグを追加して、終了ftcs
タグをコードの最終行として使用する必要があります。
16.3 WebCenter Sites JSPの理解
JSPプログラマはディレクティブ、アクション、JSPオブジェクトなどの一連の標準ツールを使用します(開発者もこれらのツールにアクセスできます)。ただし、場合によっては、JSPのディレクティブやアクションのかわりにWebCenter Sitesのタグを使用することや、JSPの暗黙オブジェクトのいずれかのかわりにWebCenter Sitesのオブジェクトにアクセスすることが必要になります。
次のトピックでは、標準のJSPとWebCenter SitesのJSPの違いを詳述しているとともに、標準のJSP機能とWebCenter Sitesのタグやメソッドとの対応関係を示しています。
16.3.1 WebCenter Sitesの標準先頭部について
WebCenter Sitesユーザー・インタフェースまたはExplorerを使用して作成したテンプレート・アセット、CSElementアセット非アセット・エレメントは、標準先頭部が自動的に追加されます。
Explorer内のJSPエレメントの標準先頭部は次のとおりです。
<%@ taglib prefix="cs" uri="futuretense_cs/ftcs1_0.tld" %> <%@ taglib prefix="ics" uri="futuretense_cs/ics.tld" %> <%@ taglib prefix="satellite" uri="futuretense_cs/satellite.tld" %> <%// // elementName // // INPUT // // OUTPUT //%> <%@ page import="COM.FutureTense.Interfaces.FTValList" %> <%@ page import="COM.FutureTense.Interfaces.ICS" %> <%@ page import="COM.FutureTense.Interfaces.IList" %> <%@ page import="COM.FutureTense.Interfaces.Utilities" %> <%@ page import="COM.FutureTense.Util.ftErrors" %> <%@ page import="COM.FutureTense.Util.ftMessage"%> <cs:ftcs> <!-- user code here --> </cs:ftcs>
WebCenter Sitesユーザー・インタフェースを使用して作成したテンプレート・アセットとCSElementアセットには、前述のコード例のような標準先頭部が表示されます。これらのアセットの標準先頭部は、ベーシック・アセットとともに使用するための追加のタグ・ライブラリをインポートして、テンプレート・アセットおよびCSElementアセットとこれらのアセットによってレンダリングされるコンテンツの間の依存関係をログに記録するタグを組み込みます。
ExplorerやWebCenter Sitesユーザー・インタフェース以外のツールを使用してエレメントとテンプレートを作成する場合は、この標準先頭部をコード内にまるごとコピーする必要があります。
次の各項では、Explorerの標準先頭部について説明します。
16.3.1.1 taglibディレクティブ
次のtaglib
ディレクティブは、WebCenter Sitesで使用するベース・タグ・ライブラリをインポートします。WebCenter Sitesユーザー・インタフェースを使用して作成したテンプレート・アセットとCSElementアセットには、追加のtaglibディレクティブがシード・コード内に表示されます。
<%@ taglib prefix="cs" uri="futuretense_cs/ftcs1_0.tld" %> <%@ taglib prefix="ics" uri="futuretense_cs/ics.tld" %> <%@ taglib prefix="satellite" uri="futuretense_cs/satellite.tld" %>
1つ目のディレクティブは、FTCSコンテキストを作成するftcs1_0
タグをインポートします。これらのタグは、作成したテンプレートまたはエレメントごとに使用され、それらのタグで囲まれたコードがWebCenter Sitesで制御されることを示します。
2つ目のディレクティブは、WebCenter Sitesの中核機能へのアクセスを可能にするics
タグをインポートします。
3つ目のディレクティブは、Satellite Serverで使用するためのsatelliteタグをインポートします。
これらのタグ・ライブラリの詳細は、「Oracle WebCenter Sitesのタグ・ライブラリについて」を参照してください。
これらのタグ・ライブラリに含まれている一般的なタグについては、「WebCenter Sitesのタグの理解」を参照してください。
これらのデフォルト内容にtaglibディレクティブを追加するには、OpenMarket/Xcelerate/AssetType/Template/ModelJsp.xml
ファイルを変更して保存します。
16.3.1.2 pageディレクティブ
次のpageディレクティブは、WebCenter Sitesで使用するベースJavaインタフェースをインポートします。
<%@ page import="COM.FutureTense.Interfaces.FTValList" %> <%@ page import="COM.FutureTense.Interfaces.ICS" %> <%@ page import="COM.FutureTense.Interfaces.IList" %> <%@ page import="COM.FutureTense.Interfaces.Utilities" %> <%@ page import="COM.FutureTense.Util.ftErrors" %> <%@ page import="COM.FutureTense.Util.ftMessage"%>
1つ目のpageディレクティブは、FTValListインタフェースをインポートし、このインタフェースは、CatalogManagerやTreeManagerなど、WebCenter Sitesのサブシステムに引数を渡すために使用する名前と値のペアのリストを作成します。
2つ目のpageディレクティブは、ICS
インタフェースをインポートし、このインタフェースは、WebCenter Sitesの中核機能へのアクセスを可能にします。
3つ目のpageディレクティブは、IListインタフェースをインポートし、このインタフェースには、WebCenter Sitesの問合せオブジェクトやリスト・オブジェクト内の行にアクセスするためのメソッドが含まれています。このインタフェースには、WebCenter SitesのXMLページ内で使用するためのリスト・オブジェクトを作成および登録しようとする際にサード・パーティが実装する必要があるメソッドも含まれています。
4つ目のpageディレクティブは、Utilities
インタフェースをインポートします。このインタフェースは、日付の書式設定、ファイルの読み書き、電子メールの送信など、いくつかの一般的なタスクのためのシンプルなインタフェースを提供します。
5つ目のpageディレクティブは、エラー・コードが含まれたftErrorsクラスをインポートします。
6つ目のpageディレクティブは、WebCenter Sitesで使用されるエラー・メッセージが含まれたftMessage
クラスをインポートします。
JSPエレメント用の標準ディレクティブにpageディレクティブを追加するには、OpenMarket/Xcelerate/AssetType/Template/ModelJsp.xml
ファイルを変更して保存します。
16.3.2 JSPの暗黙オブジェクトについて
JSPでは、開発者が使用できる暗黙オブジェクトがいくつか用意されています。ただし、WebCenter Sitesのコンテキスト内では、WebCenter Sitesのオブジェクトを扱うことが多いため、JSPの暗黙オブジェクトを使用するかわりにWebCenter SitesのJSPタグとJavaメソッドを使用して、これらのWebCenter Sitesのオブジェクトにアクセスする必要があります。
この表は、JSPの暗黙オブジェクトおよびこれらのオブジェクトの主要なメソッドと、これらの代替として使用する必要があるWebCenter Sitesのタグやメソッドの対応関係を示しています。
表16-2 JSPの暗黙オブジェクトのマッピング
オブジェクト | メソッド | WebCenter Sitesのタグやメソッド |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16.3.3 JSP構文について
Oracle WebCenter Sitesでは、標準のJSP構文が使用されます。タグをネストする際は(JSPタグのパラメータの値としてJSP式を使用する場合など)、次の例のように必ず一重引用符で式を囲んでください。
name='<%=ics.GetVar("myVariable")%>'
16.3.4 JSPアクションについて
標準のJSPでは、開発者はいくつかの種類のアクションを使用できます。この表は、WebCenter Sitesのタグに置き換える必要のあるアクションと、通常どおり使用できるアクションを示しています。
表16-3 JSPのアクションとWebCenter Sitesのタグの比較
アクション | WebCenter Sites |
---|---|
|
|
|
これは、カスタムJava Beanに使用し、WebCenter Sitesのプロパティのいずれかの値を探す場合は、 |
|
|
|
これは、カスタムJava Beans内のプロパティを設定する場合に使用します。WebCenter Sitesのプロパティを設定するには、WebCenter Sitesのプロパティ管理ツールを使用します。 |
|
これは、カスタムJava Beanに使用します。 |
16.3.5 JSP宣言について
標準のJSPでは、通常はJSP宣言内で変数を宣言します。WebCenter Sitesでは、ics:setvar
タグを使用して、WebCenter Sitesのコンテキスト内で使用できる変数を宣言します。
WebCenter Sites変数の詳細は、「WebCenter Sitesでサポートされる変数について」を参照してください。
16.3.6 スクリプトレットと式について
スクリプトレットと式は、通常のJSP用法とまったく同じように使用できます。
ただし、WebCenter SitesのJSPタグのパラメータの値として式を使用する場合は、「JSP構文について」で説明しているように、必ず引用符を正しくネストしてください。
16.3.7 JSPディレクティブについて
WebCenter Sitesのコンテキスト内でJSPをコーディングする場合は、この表で概略を説明しているように、ディレクティブの使用についていくつかの注意点があります。
表16-4 JSPのディレクティブとWebCenter Sitesのタグの比較
ディレクティブ | WebCenter Sites |
---|---|
|
|
|
WebCenter Sitesユーザー・インタフェースまたはOracle WebCenter Sites Explorerツールを使用して作成したエレメントまたはテンプレートには、標準のpageディレクティブが自動的に追加されます。 標準のディレクティブに加えて、作成するWebCenter Sitesのエレメントやテンプレートごとに、 ページのコンテンツ・タイプをtext/htmlに設定して、文字セットをUTF-8に設定するには、WebCenter SitesのすべてのJSPファイルの先頭行として次のpageディレクティブを入力します。
|
|
WebCenter Sitesでは、作成されるテンプレートとエレメントに使用頻度の高いtaglibディレクティブが自動的に追加されます。 WebCenter Sitesの別のtaglibディレクティブをエレメントやテンプレート・アセットに、必要に応じて追加できます。 |
16.3.8 Oracle WebCenter Sitesのタグ・ライブラリについて
WebCenter Sitesでは、WebCenter SitesのAPIの機能に対応する一連のJSPタグ・ライブラリが用意されています。
次の表に、WebCenter Sitesのタグ・ライブラリを一覧表示して、これらの機能を説明します。この表は、ご使用のJSPにどのタグ・ライブラリをインポートするかを決定する際のリファレンスとして使用してください。
表16-5 ベーシック・アセットとフレックス・アセット両方のタグ・ライブラリ
タグ・ライブラリ | 説明 |
---|---|
|
アクセス制御リストを作成および操作するためのタグ。 |
|
年、月、日のフィールドと時間、分、午前/午後のオプション・フィールドで構成される日付を、1970年1月1日0:00 GMTから経過したミリ秒数を表すエポック形式の倍長整数に変換するタグ。dateタグは、倍長整数から日付への変換も行います。 |
|
ディレクトリ・サービスのタグ。 |
|
FTCSコンテキストを作成するタグ。これらのタグは、作成したテンプレートまたはエレメントごとに使用され、それらのタグで囲まれたコードがWebCenter Sitesで制御されることを示します。 |
|
WebCenter Sitesの中核機能へのアクセスを可能にするタグで、CatalogManagerとTreeManagerのコマンドや、if/then文のような基本的なコーディング構文などがあげられます。 |
|
Webモード用のタグ。 |
|
テキスト文字列をローカライズするためのタグ。 |
|
WebCenter Sitesに現在ログインしているユーザーの名前にアクセスして、ディレクトリ・サービス内のユーザー名を操作するタグ。 |
|
WebCenter Sitesのオブジェクトを操作するためのタグ。 |
|
WebCenter Sitesのプロパティ・ファイルから値を取得するためのタグ。 |
|
ベーシック・アセットをレンダリングするタグ。 |
|
これらのタグの多くには、同等の機能を持つRENDER版( |
|
WebCenter SitesのSOAPタグ。 |
|
エレメントのパフォーマンスを特定するためのタイミングを取得および設定するタグ。 |
|
ユーザーをWebCenter Sitesにログインさせたり、WebCenter Sitesからログアウトさせたりするためのタグ。 |
|
特定タイプのパブリックWebサイトをWebCenter Sitesのページの一部として使用することを可能にするWebサービスのタグ。 |
この表は、ベーシック・アセット用のタグ・ライブラリに関するデータを示しています。
表16-6 ベーシック・アセット用のタグ・ライブラリ
タグ・ライブラリ | 説明 |
---|---|
|
ベーシック・アセットを取得および操作するタグ。 |
|
サイト・ナビゲーション・ツリーへのアクセスを可能にするタグ。これらのタグは、ベーシック・アセットが使用されるサイトへのナビゲーションを作成するために使用します。 |
この表は、フレックス・アセット用のタグ・ライブラリに関するデータを示しています。
表16-7 フレックス・アセット用のタグ・ライブラリ
タグ・ライブラリ | 説明 |
---|---|
|
フレックス・アセットを使用してアセットセットを作成するためのタグ。 |
|
フレックス・アセットの属性であるBLOBを取得および操作するためのタグ。 |
|
基本的な計算関数とブール関数を提供するタグ。 |
|
ショッピング・カート・オブジェクト内のアイテムを追加、削除およびその他の形で操作することを可能にするタグ。 |
|
登録済購入者のショッピング・カート・オブジェクトを保管、取得、削除および一覧表示することを可能にするタグ。 |
|
訪問者コンテキスト内のオブジェクトにアクセスするタグ。 |
|
浮動小数点値と通貨文字列を変換して、通貨文字列の書式設定と端数処理を実行するタグ。 |
|
浮動小数点値を様々なロケールの小数オブジェクトとして書式設定するタグ。 |
|
IListをハッシュ表としてキャストして、キーに基づいてこのハッシュ表内を検索することを可能にするタグ。 |
|
WebCenter Sitesの結果セット・リストを作成するタグで、エレメント全体にわたって他のタグの引数として使用されます。 |
|
ロケール・オブジェクトを生成するタグで、システム内の様々な他のタグのロケールを記述するために使用されます。 |
|
各種のタグ(入力リスト内のすべての列の名前を返すタグなど)。 |
|
フレックス・アセットのグループ(アセットセット)を制約するための検索状態を作成するタグ。 |
|
指定されたセッションに対して格納されたオブジェクトをすべてフラッシュするタグ。 |
|
文字列操作を実行するタグ。 |
|
テキストを書式設定するタグ。 |
|
WebCenter Sitesや他のデータベースから、Webサイト訪問者に関する情報を記録および取得することを可能にする訪問者データ管理タグ。 |
16.4 WebCenter Sites XMLの理解
WebCenter SitesのXMLは、標準のXML構文を使用し、futuretense_cs.dtd
によって定義されます。WebCenter SitesのJSPタグと同様に、WebCenter SitesのXMLタグは、WebCenter Sitesのサーブレットとオブジェクトへのアクセスを可能にします。
WebCenter Sites XMLでコーディングするときに知っておく必要があることについては、次のトピックを参照してください。
16.4.1 WebCenter Sitesの標準先頭部
AdminインタフェースまたはOracle WebCenter Sites Explorerツールを使用して作成するテンプレートおよびエレメントには、標準先頭部が追加されます。
<?xml version="1.0" ?> <!DOCTYPE ftcs SYSTEM "futuretense_cs.dtd"> <ftcs version="1.2"> </ftcs>
WebCenter Sitesユーザー・インタフェースまたはExplorer以外のツールを使用してエレメントとテンプレートを作成する場合は、これらをコード内にまるごとコピーする必要があります。
次の各項では、この標準先頭部について説明しています。
16.4.1.1 XMLのバージョンとエンコーディング
WebCenter SitesのいずれのXMLテンプレートやXMLエレメントでも、先頭行では次のようにXMLバージョンを設定する必要があります。
<?xml version="1.0"?>
エレメントが実行されるためには、そのエレメントの先頭行は<?xml version="1.0"?>
である必要があり、このテキストの前に空白があってはいけません。さらに、この行の末尾に強制改行を入力して、この行を独立した行にする必要もあります。
このテンプレートまたはエレメントのエンコーディングは、次のようにして設定します。
<?xml version="1.0" encoding="utf-8"?>
16.4.1.2 DTDファイル
WebCenter SitesのXMLは、futuretense_cs.dtd
ファイルによって定義されます。XMLバージョン文の直後に次の行を入力することで、コーディング対象のWebCenter Sitesのエレメントまたはテンプレートのそれぞれにこのファイルをインポートする必要があります。
<!DOCTYPE ftcs SYSTEM "futuretense_cs.dtd">
16.4.2 XMLのエンティティと予約文字
<や>などの記号はXMLの予約文字であるため、このような記号をコンテンツに入力しないでください。たとえば、次のコードでは、テキスト内で小なり演算子(<)が使用されているため、XMLパーサーが混乱します。
<P>4 < 7</P>
予約文字のかわりに文字エンティティを使用する必要があります。文字エンティティは&#
で始まり、セミコロンで終わります。&#
とセミコロンの間には、目的の文字の10進Latin-1 (ASCIIのスーパーセット)値を指定します。たとえば、<
記号の10進Latin-1値は60であるため、XMLでの前述の行の正しいコーディング法は次のとおりです。
<P>4 < 7</P>
これらの文字入エンティティのリストは、<a href="website-development-tag-technologies.html#GUID-9D1BF05F-C11C-4223-A572-335AE8B828EF" title='Use the hexadecimal character representation of special (non-alphanumeric) characters in your XML or JSP instead of the special characters themselves. For example, to specify a space as part of a variable value, you can use this line:
ノート:
空白を使用すると、JSPを使用してXMLレスポンスを生成する場合に問題が発生することがあります。レスポンスが機能するには、XMLをcontent typeとしてサーバーに追加すればよいという単純なものではありません。空白がXMLファイルの先頭に挿入されないようにJSPを構成する必要があります。
16.4.3 XML解析エラー
WebCenter Sitesのタグを処理するXMLパーサーは、それらのタグが構文的に正しいことを確認します。これにより、タグ付け構文エラーに関する見つけにくい問題を発見することが簡単になります。タグ名のスペルミスはエラーとして報告されません。その理由は、XMLパーサーが、すべてのタグ名がDTD内に存在することを要求しないからです。
WebCenter Sitesシステムに対してページが要求され、XML構文エラーが検知されると、元にストリームされる結果には、問題の所在を突き止めるために役立つ有用な情報が格納されます。これらの結果には、全般的なエラー説明が記載されて、その後にエラーの行と列の位置が示されます。たとえば、次のエラーでは無効なパラメータ名が報告されています。
Illegal attribute name NAM Illegal attribute name NAM Location: null(6,11) Context:
次のエラーでは、間違ったタグ・ネストが報告されています。
Close tag IF does not match start tag THEN Close tag IF does not match start tag THEN Location: null(13,3) Context:
XMLパーサーは、ランタイム・エラーも検知します。これらのエラーでは、XMLタグは構文的に正しいですが、処理時に構造のエラーが検知されます。たとえば、次のエラーではARGUMENT
の無効な使用が報告されています。
Failed to run template:c:\FutureTense\elements\dan.xml Runtime error Argument invalid [Argument 5] Containing tag: FTCS
16.5 WebCenter Sitesタグの理解
WebCenter Sitesでは、WebCenter Sitesとその製品ファミリの様々な機能へのアクセスを可能にする一連の広範なJSPタグとXMLタグが用意されています。これらのタグを、HTML、Java、JavaScriptおよびカスタム・タグと組み合せて使用して、Webサイトをコーディングします。
この項では、テンプレート・アセットとエレメントで使用される可能性が高いタグについて、概要を示します。WebCenter Sitesタグの詳細は、『Oracle WebCenter Sitesリファレンス・タグ・リファレンス』を参照してください。
ここで説明するタグは、次のように用途別に分けています。
16.5.1 WebCenter Sitesのコンテキストを作成するタグ
次のタグは、WebCenter Sitesのコンテキストを作成します(このコンテキスト内でコーディングします)。これらのタグは、記述するすべてのテンプレートやエレメントで使用します。
FTCS (XML) | ftcs1_0:ftcs (JSP) |
---|---|
|
|
ftcs
タグは、WebCenter Sitesのコンテキストを作成します。開始ftcs
タグはコード内の最初のタグである必要があり、終了ftcs
タグはコード内の最後のタグである必要があります。WebCenter Sitesでは、開始と終了のftcs
タグの外側に配置されたコンテンツは認識されません。したがって、これらのタグの外側のコンテンツはキャッシュされず、これらのタグは正しく機能しません。
16.5.2 変数を処理するタグ
次のタグは、WebCenter Sites内の変数を処理します。
CSVAR (XML) | ics:getvar (JSP) |
---|---|
|
|
CSVAR
は、変数、セッション変数、ビルトインまたはカウンタの値を表示します。
SETVAR (XML) | ics:setvar (JSP) |
---|---|
|
|
SETVAR
は、通常のWebCenter Sites変数の値を設定します。この変数の値は、REMOVEVAR
を使用して明示的に削除されないかぎり、ページ評価の最中は存続します。
SETSSVAR (XML) | ics:setvar (JSP) |
---|---|
|
|
SETSSVAR
は、セッション変数を設定します。
REPLACEALL (XML) | ics:resolvevariables (JSP) |
---|---|
|
|
REPLACEALL
とics:resolvevariables
は、複数のWebCenter Sites変数を解決します。つまり、WebCenter Sitesの変数をHTMLタグで使用する場合は、これらのタグを使用してそれらの変数を解決します。
WebCenter Sites、WebCenter Sitesでサポートされる変数についてを参照してください。
16.5.3 ページとエレメントをコールするタグ
次のタグを使用して、エレメントまたはテンプレートをコールします。
ノート:
次で使用されているCACHECONTROL
は非推奨になりました。
RENDER.SATELLITEPAGE (XML) | render:satellitepage (JSP) |
---|---|
|
|
RENDER.SATELLITEPAGE
は、WebCenter Sitesのページレットを要求して、そのページレットをWebCenter SitesとSatellite Serverの両方でキャッシュします(そのページレットがまだキャッシュ内に存在しない場合)。ページやページレットを個別にキャッシュすることなくコールするには、RENDER.CALLELEMENT
タグを使用します。RENDER.SATELLITEPAGE
タグはスタックされたスコープを持つため、そのページで使用できる変数は、明示的に渡した変数のみです。
RENDER.CALLELEMENT (XML) | render:callelement (JSP) |
---|---|
|
|
RENDER.CALLELEMENT
タグとRENDER.SATELLITEPAGE
タグは、どちらのタグも他のWebCenter Sitesコードをコールするという点で似ていますが、前者はエレメント内のコードをコールし、後者はページ内のコードをコールします。ただし、RENDER.CALLELEMENT
によってコールされたコードは、個別のページやページレットとしてSatellite Server上でキャッシュされません。
RENDER.CALLELEMENT
を使用して、WebCenter Sitesのコンテンツ・アプリケーション用に記述したエレメントのコンテンツを処理します(この場合、そのエレメントのスコープがスタックされることが求められます)。このエレメントはElementCatalog内に存在している必要があります。
16.5.4 URLを作成するタグ
RENDER.GETPAGEURL (XML) | render:getpageurl (JSP) |
---|---|
|
|
このタグは、アセットのURLを作成して、そのアセットに渡された引数をURLエンコードされた文字列に変換して、その文字列をOUTSTR
パラメータで指定された変数として返します。rendermode
がexport
に設定されている場合は、このタグは、静的HTMLファイルのファイル名を作成します(ただし、動的URLを求めると指定した場合は除きます)。rendermode
がlive
に設定されている場合は、このタグは動的URLを作成します。
RENDER.SATELLITEBLOB (XML) | render:satelliteblob (JSP) |
---|---|
|
|
このタグは、BLOBであるアセットのBlobServerのURLが含まれたHTMLタグを作成します。たとえば、イメージ・ファイル・アセットは、WebCenter Sitesデータベースに格納されたBLOBであるため、これらのアセットはBlobServerサーブレットで処理する必要があります。このタグは、指定されたBLOBを検索して書式設定する方法をブラウザに指示するHTMLタグを作成します。
16.5.5 キャッシングを制御するタグ
次のタグを使用すると、現在のテンプレートやエレメントの出力をキャッシュするかどうかを制御できます。
ics.disablecache (XML) | ics:disablecache (JSP) |
---|---|
|
|
ics.disablecache
は、エラー状態の有無をチェックするif/then
文と組み合せて使用し、エラーが存在する場合は、結果としてレンダリングされるページはキャッシュされません。ics.disablecache
タグの詳細とコード・サンプルの詳細は、「間違ったページのキャッシングの防止」を参照してください。
16.5.6 Cookieを設定するタグ
次のタグは、WebCenter Sites内のCookieを設定します。
satellite.cookie (XML) | satellite:cookie (JSP) |
---|---|
|
|
satellite.cookie
は、ユーザーのブラウザ上のCookieを設定します。このタグは、XMLまたはJSPでCookieを設定するための唯一の手段です。
16.5.7 プログラミング構文のタグ
次のタグを使用すると、基本的なプログラミング構文を使用できます。
IF/THEN/ELSE (XML) | ics:if/ics:then/ics:else (JSP) |
---|---|
|
|
IF
、THEN
、ELSE
では、条件を設定します。通常は、これらのタグを使用して変数の値を設定します。
LOOP (XML) | ics:listloop (JSP) |
---|---|
|
|
LOOP
とics:listloop
は、リスト内のアイテムを反復処理します。すでに述べたように、これらのタグ内に過大な量のコードが含まれている場合は、テンプレートのパフォーマンスが低下します。反復する必要のない文は、できるかぎりLOOP
タグの外側に配置してください。
16.5.8 構成上と承認上の依存関係を管理するタグ
構成上と承認上の依存関係の詳細は、「依存性について」を参照してください。
RENDER.LOGDEP (XML) | render:logdep (JSP) |
---|---|
|
|
テンプレートで、アセットをロードすることなくそのアセットのデータを取得するタグ(ASSET.CHILDREN
など)が使用される場合は、RENDER.LOGDEP
タグを使用します。
RENDER.UNKNOWNDEPS (XML) | render.unknowndeps (JSP) |
---|---|
|
|
ページに問合せが含まれているか、そのページの依存アセットに対する他のなんらかの不確定の接続が含まれている場合は、RENDER.UNKNOWNDEPS
タグを使用します。このタグは、依存関係を特定できないという理由で、パブリッシュごとにそのページまたはページレットを再生成させます。このため、このタグはできるだけ使用しないでください。
RENDER.FILTER (XML) | render:filter (JSP) |
---|---|
|
|
RENDER.FILTER
タグを使用して、未承認アセットの有無を確認して、未承認アセットがエクスポートされるページに含まれることを防止します。このタグは、それぞれのアセットIDをApprovedAssets
データベース表のassetid
列と照合することで、単一のアセットまたはアセットのリストをフィルタリングします。エクスポート・レンダリング時は、このタグは、承認ステータスに基づいてパブリッシュ可能な対象をフィルタリングします。ライブ・レンダリング時は、RENDER.FILTER
は何の処理も実行しません。このタグは、テンプレート内のアセットのリストに対するデータベース問合せがある場合は常に使用してください。
16.5.9 ベーシック・アセットに関する情報を取得するタグ
ASSET.LOAD (XML) | asset:load (JSP) |
---|---|
|
|
このタグは、データベースに対して特定のアセットについて問い合せてから、そのアセットのデータをメモリー内にオブジェクトとしてロードします。このオブジェクトは、当該セッションがフラッシュされるかそのオブジェクトに割り当てられた名前が上書きされるまで、エレメントで使用可能になります。
ロードされたアセットに割り当てるオブジェクト名のスコープは、グローバル です。エレメントによってオブジェクトが誤って上書きされることを防止するために、必ず一意のオブジェクト名を使用してください。便利なネーミング規則は、エレメント名をアセット名に含めることです。この規則に従って一意のアセット・オブジェクト名を作成する例については、「ベーシック・モジュラ・デザインの作成」を参照してください。
ASSET.LOAD
は、このタグを使用するテンプレートやエレメントとこのタグによって取得されるアセット・データとの間の依存関係を自動的にログに記録します。
ASSET.SCATTER (XML) | asset:scatter (JSP) |
---|---|
|
|
このタグは、ASSET.LOAD
タグを使用して取得(ロード)されているアセット・オブジェクトのすべてのフィールドから値を取得して、これらの値をWebCenter Sitesの変数に変換します。たとえば、オンライン記事のヘッドライン、署名行、本文などを表示するには、このタグを使用して、1回のコールでこれらの値をすべて取得できます。
ASSET.GET (XML) | asset:get (JSP) |
---|---|
|
|
このタグは、ASSET.LOAD
タグを使用して取得(ロード)されているアセット・オブジェクトの1つの指定フィールドから値を取得して、その値をWebCenter Sitesの変数に変換します。たとえば、記事のリンクで使用するためにその記事のヘッドラインを使用するには、このタグを使用してその値だけを取得します。
ASSET.CHILDREN (XML) | asset:children (JSP) |
---|---|
|
|
このタグは、AssetRelationTree表に問い合せて、指定されたアセットの子アセットのリストを作成します。このタグを使用して、コレクション内のアセットを取得したり、記事アセットに関連付けられたイメージ・アセットを取得したりします。
RENDER.LOGDEP
タグをASSET.CHILDREN
と組み合せて使用して、このタグが含まれたエレメントやテンプレートと、ASSET.CHILDREN
によって取得されるコンテンツとの間の依存関係をログに記録します。
16.5.9.1 アセット・タグに関するパフォーマンス上のノート
-
ASSET.LOAD
とASSET.CHILDREN
はデータベース問合せであり、データベースに対する問合せは時間がかかるため、これらのタグは必要な場合にのみ使用してください。たとえば、ASSET.LOAD
タグとその後続のASSET.CHILDREN
タグの間にエラー・チェック・コードを挿入することも可能で、後者のタグは、アセットがASSET.LOAD
によって返されたかどうかを判定します。アセットが存在しない場合は、ASSET.CHILDREN
タグを呼び出さないでください。 -
ASSET.SCATTER
コールは、単一のASSET.GET
コールよりもはるかに長い時間がかかります。
16.5.10 アセットセットを作成するタグ(フレックス・アセット)
アセットセット・タグでは、データベースから取得する1つ以上のフレックス・アセットのセットを指定します。
アセットセットから取得できる情報は次のとおりです。
-
アセットセット内の各フレックス・アセットの1つの属性の値
-
アセットセット内の各フレックス・アセットの複数の属性の値
-
アセットセット内のフレックス・アセットのリスト
-
アセットセット内のフレックス・アセットの数
-
アセットセット内のすべてのフレックス・アセットの1つの属性の一意の属性値のリスト
-
アセットセット内のすべてのフレックス・アセットの属性の一意の属性値の数
使用頻度の高いアセットセット・タグは次のとおりです。
ASSETSET.SETASSET (XML) | assetset:setasset (JSP) |
---|---|
|
|
ASSETSET.SETASSET
は、指定された単一のアセットからアセット・セットを作成して、このタグが含まれたテンプレートやエレメントと、このタグによって取得されるコンテンツとの間の構成上の依存関係を定義します。
ASSETSET.SETSEARCHEDASSETS (XML) | assetset:setsearchedassets (JSP) |
---|---|
|
|
ASSETSET.SETSEARCHEDASSETS
は、指定された検索条件によって絞り込まれた特定タイプのすべてのアセットを表すアセットセット・オブジェクトを作成します(この検索条件は、constraint
パラメータで指定される検索状態オブジェクトによって表されます)。
このタグは、このタグが含まれたテンプレートやエレメントと、アセットセット内の各アセットとの間の構成上の依存関係も規定します。
ASSETSET.GETMULTIPLEVALUES (XML) | assetset:getmultiplevalues (JSP) |
---|---|
|
|
ASSETSET.GETMULTIPLEVALUES
は、複数の属性(および場合によっては複数のアセット)の属性値を複数の指定リスト内に分散します。
ASSETSET.GETMULTIPLEVALUES
を使用することが推奨されるのは、固定形式のアセット表を表示しようとしている場合や、単一アセットの多くの属性を取得しようとしている場合です(製品詳細ページなどのために)。
ASSETSET.GETMULTIPLEVALUES
の制限事項は次のとおりです。
-
非外部属性のみを分散できます。
-
テキスト・タイプの属性は分散できません。
ASSETSET.GETATTRIBUTEVALUES (XML) | assetset:getattributevalues (JSP) |
---|---|
|
|
ASSETSET.GETATTRIBUTEVALUES
は、アセットセットによって表されるアセットの指定された属性の値のリストを取得します。
ASSETSET.GETASSETLIST (XML) | assetset:getassetlist (JSP) |
---|---|
|
|
ASSETSET.GETASSETLIST
は、オプションのソート条件に基づいて、順序付けられたアセット・リストを取得します。得られるリストはassetidとassettypeという2つの列からなり、これらの列は指定された条件に基づいてソートされます。
16.5.11 検索状態を作成するタグ(フレックス・アセット)
検索状態タグは、assetset
タグを使用して取得されたアセットをフィルタリングする条件を構成します。
検索状態を構築するには、検索状態によって記述されるフレックス・アセットのリストに対して、制約を追加して絞り込むか、または制約を削除して広げます。
使用頻度の高いsearchstate
タグは次のとおりです。
SEARCHSTATE.CREATE (XML) | searchstate:create (JSP) |
---|---|
|
|
SEARCHSTATE.CREATE
は、空の検索状態オブジェクトを作成します。このタグを使用して検索状態の構築を開始する必要があります。
SEARCHSTATE.ADDSTANDARDCONSTRAINT (XML) | searchstate:addstandardconstraint (JSP) |
---|---|
|
|
SEARCHSTATE.ADDSTANDARDCONSTRAINT
は、属性の名前と値の制約を新規または既存の検索状態オブジェクトに追加します。
list
パラメータで指定する値のリストによって、属性を制約できます。
SEARCHSTATE.ADDSIMPLESTANDARDCONSTRAINT (XML) | searchstate:addsimplestandardconstraint (JSP) |
---|---|
|
|
SEARCHSTATE.ADDSIMPLESTANDARDCONSTRAINT
は、属性の名前と単一値の制約を既存の検索状態に追加します。
このタグは、SEARCHSTATE.ADDSTANDARDCONSTRAINT
の簡易版です。NAME
で指定されたオブジェクトは、新しい制約を反映して更新されます。属性名が検索状態内にある場合は、新しい制約によって古い制約が置換されます。
SEARCHSTATE.ADDRANGECONSTRAINT (XML) | searchstate:addrangeconstraint (JSP) |
---|---|
|
|
SEARCHSTATE.ADDRANGECONSTRAINT
は、特定の属性名の範囲制約を追加します。
SEARCHSTATE.ADDRICHTEXTCONSTRAINT (XML) | searchstate:addrichtextconstraint (JSP) |
---|---|
|
|
SEARCHSTATE.ADDRICHTEXTCONSTRAINT
は、属性名とリッチテキスト表現を検索状態内のリッチテキスト制約のリストに追加します。
SEARCHSTATE.TOSTRING (XML) | searchstate:tostring (JSP) |
---|---|
|
|
SEARCHSTATE.TOSTRING
は、検索状態オブジェクトをそのオブジェクトの文字列表現に変換し、この文字列表現は、セッション変数に保存したりURLに組み込んだりといった様々な用途に適しています。
SEARCHSTATE.FROMSTRING (XML) | searchstate:fromstring (JSP) |
---|---|
|
|
SEARCHSTATE.FROMSTRING
を使用すると、検索状態オブジェクトを、その文字列表現から初期化できます。このタグを使用する前に、SEARCHSTATE.CREATE
タグを使用して空の検索状態を作成する必要があります。
16.6 WebCenter Sitesでサポートされる変数について
WebCenter Sitesは、標準変数およびセッション変数をサポートしています。
-
通常変数: この変数は、明示的に削除されないかぎり、現在のテンプレートやエレメントが存続している間は存続します。通常変数にはグローバル・スコープが設定されています。
-
セッション変数: この変数は、現在のセッションが継続している間は存続します。
WebCenter Sitesでは、予約された名前を持ついくつかの標準変数が用意されています。これらの変数の値を取得することはできますが、これらの変数の名前を他の独自に作成した変数の名前として使用することはできません。
次のトピックを参照してください。
16.6.1 予約変数
ノート:
予約変数の変更は許可されていません。表16-8 予約変数
変数 | 定義 |
---|---|
|
|
|
呼び出されたWebCenter Sitesページの名前。 |
|
CatalogManagerのコールで使用される変数。 |
|
現行セッションに現在ログインしているユーザーの名前が格納されたセッション変数。 |
|
現行セッションに現在ログインしているユーザーのパスワードが格納されたセッション変数。 |
|
WebCenter Sitesにログインさせるユーザーのユーザー名に設定できる変数。これは、URLを使用してWebCenter Sitesに送信できます。 |
|
WebCenter Sitesにログインさせるユーザーのパスワードに設定できる変数。これは、URLを使用してWebCenter Sitesに送信できます。 |
|
現在のユーザーが属しているACLが格納されたセッション変数。 |
|
WebCenter Sitesのタグによって報告されるエラー番号。 |
|
|
|
|
|
|
|
Satellite Serverとの通信をサポートするためにWebCenter Sitesによって自動的に設定される内部変数。 |
|
テンプレートによって書式設定されるアセット・タイプ。WebCenter Sitesは、テンプレート・アセットが保存されるときにデフォルトでこの変数を設定します。 |
|
テンプレートによってレンダリングまたは書式設定されるアセットのID。 |
|
子テンプレートの値(子テンプレートが存在する場合)。 |
|
アセットの親ページのID(親ページが存在する場合)。 |
|
ページ・エントリがライブ、エクスポート済、プレビュー済のいずれの状態で提供されるのかを指定します。デフォルトでは、 |
|
SiteEntryアセットのID。 |
|
テンプレート・アセットのID。 |
|
CSElementアセットのID。 |
16.6.2 標準変数
WebCenter Sitesのテンプレートやエレメントをコーディングする際に使用する変数のほとんどは、通常変数です。通常変数は、WebCenter Sitesのタグを使用して明示的に削除されないかぎり、現在のテンプレートやエレメントが存続している間は存続します。
16.6.2.1 SETVARを使用した変数
WebCenter Sitesのエレメント内では、SETVAR
というXMLタグやJSPタグをコールし、変数を作成してその初期値を設定できます。たとえば、次のSETVAR
XMLタグは、dog
という名前の変数を作成して、その値をfido
に設定します。
<SETVAR NAME="dog" VALUE="fido"/>
この変数が存在している場合は、SETVAR
はその値を新しい値に再設定します。たとえば、次のコマンドは、dogの値をmocha
に再設定します。
<SETVAR NAME="dog" VALUE="mocha"/>
16.6.2.2 URLを使用した変数
WebCenter Sitesアプリケーションによって管理されているURLにブラウザがアクセスすると、WebCenter Sitesはページを作成します。各ページは特定のURLに関連付けられています。たとえば、次の形式のURLに関連付けられたページがあるとします。
http://host:port
/servlet/ContentServer?pagename=Experiment/Hello
すべてのURLの末尾に、1つ以上の変数を設定できます。たとえば、次のURLは、Hello
ページ内に3つの変数を作成します。
http://host:port/servlet/ContentServer?pagename=Experiment/Hello&dog=fido&cat=fifi
このURLは、Hello
で使用できる次の変数を作成します。
-
Experiment/Hello
という値が設定されたpagename
という名前の変数 -
fido
という初期値が設定されたdog
という名前の変数 -
fifi
という初期値が設定されたcat
という名前の変数
16.6.2.3 Explorerを使用したエレメントとテンプレートのデフォルト変数
Explorerを使用してページ内のデフォルト変数を作成するには、それらの変数を次のフィールドのいずれかに入力します。
-
SiteCatalog
データベース表のresargs1
フィールドまたはresargs2
フィールド。 -
ElementCatalog
データベース表のresdetails1
フィールドまたはresdetails2
フィールド。
たとえば、Explorerを使用してSiteCatalog
表にアクセスして、この図に示すように、resargs1
フィールドとresargs2
フィールドに名前と値のペアを入力することで、dog
とcat
という変数を作成できます。
この例では、一方の名前と値のペアをresargs1
に入力して、もう一方の名前と値のペアをresargs2
に入力していることに注意してください。別の方法として、この図のように両方の名前と値のペアをresargs1
に入力することもできます。
この図のように、resdetails1
フィールドとresdetails2
フィールドに名前と値のペアを入力することで、ElementCatalog
表でdog
とcat
の値を設定することもできます。
URLを通じて設定された変数や、POST
操作やGET
操作を通じて設定された変数は、SiteCatalog
表やElementCatalog
表を使用して設定された変数よりも優先されます。たとえば、URLを通じて変数dog
がrex
に設定されている一方で、SiteCatalog
でdog
がfido
に設定されている場合は、結果として得られるdog
の値はrex
になります。
16.6.2.4 HTMLフォームを使用した変数
CGIプログラミングでは、購入者はフォームに入力します。次に、ブラウザはその購入者の入力内容を名前と値のペアとしてエンコードして、これらの名前と値のペアはCGIスクリプトに渡されます。
WebCenter Sitesでは従来のCGIプログラミングは使用されませんが、WebCenter Sitesのエレメントは従来どおりフォームを表示できます。従来のプログラミングの場合と同様に、ブラウザは購入者の入力内容を名前と値のペアとしてエンコードします。ただし、これらの名前と値のペアはCGIプログラムに渡されるかわりに、別のWebCenter Sitesページに渡されます。受取り側のWebCenter Sitesページは、WebCenter Sitesの任意の変数にアクセスするのと同じように、これらの名前と値のペアにアクセスできます。
Cookieの名前と値も変数としてインスタンス化されます。Cookieの詳細は、「セッションおよびCookieについて」を参照してください。
16.6.3 セッション変数
HTTPはステートレスなプロトコルです。この制約に対処するために、WebCenter Sitesは複数の要求にまたがって状態を維持でき、そうすることでセッションを追跡管理できます。
ブラウザをWebCenter Sitesシステムに接続すると、セッションが確立されます。その後は、そのセッションがシステム側で一意に識別されます。WebCenter Sitesは、この一意の識別情報に基づいたコンテンツと動作を備えたページを提供できます。
クライアントが最初にサイトにアクセスすると、一意のセッションが確立されます。WebCenter Sitesは、デフォルトのユーザーIDを新しいセッションに関連付けて、その情報をセッション変数内に保持します。セッション変数に格納された値は、そのセッションが継続する間は使用できます。セッション変数は、ユーザーのセッションの一部として保存されて、変数の値を複数のページ要求にまたがって保持するために使用されます。
クラスタ化された構成では、セッションの状態はすべてのクラスタ・メンバーにまたがって維持されます。セッション変数は慎重に使用してください。使用されるセッション変数の数とサイズに比例して、リソース負荷が増大するからです。
セッションの状態は、次の状況が発生すると失われます。
-
クライアントが終了しました。
-
セッションがタイムアウトしました。WebCenter Sitesは、一定期間にわたって要求が発行されない場合は任意でセッションを終了させることができます。
-
アプリケーション・サーバーが再起動されました。
セッションに関連付けられたサーバー・リソースは、次の状況が発生すると割当て解除されます。
-
WebCenter Sitesのタグを使用して、クライアントによってセッションが明示的に終了されました。
-
セッションがタイムアウトしました。
-
アプリケーション・サーバーが再起動されました。
セッション変数を作成するには、SETSSVAR
というXMLタグおよびJSPタグを使用します。そのセッション変数が存在している場合は、SETSSVAR
はその変数の値を再設定します。たとえば、次のSETSSVAR XML
タグは、セッション変数profile
の値を10154
に設定します。
<SETSSVAR NAME="profile" VALUE="10154"/>
16.6.4 変数の操作
次の各項では、WebCenter Sitesの変数を操作する方法を説明しています。
16.6.4.1 変数の値を読み取るための構文
変数の値を読み取るために使用する構文は、次のように変数のタイプに応じて異なります。
表16-9 変数および構文
変数のタイプ | 構文 | 例 |
---|---|---|
文字列変数 |
|
|
カウンタ変数 |
|
|
セッション変数 |
|
|
プロパティ |
|
|
WebCenter SitesのXMLでは、リスト変数にアクセスするための多くのメソッドが用意されています。
16.6.4.2 変数の値を表示するためのタグ
CSVAR
XMLタグを使用すると、プロパティやセッション変数を含む任意のタイプの変数の値を表示できます。WebCenter Sitesの通常変数の値を表示する際に使用するJSPタグはics:getvar
で、セッション変数の値を表示する際に使用するJSPタグはics:getssvar
です。たとえば、次のコードがXMLエレメントに含まれているとします。
<SETVAR NAME="mood" VALUE="happy"/> <p>My dog is <CSVAR NAME="Variables.mood"/>.</p>
この場合は、得られるページでは次のテキストが表示されます。
My dog is happy.
CSVAR
XMLタグのNAME
引数の一部としてリテラル値を含めることも可能で、たとえば、次のコードによっても「My dog is happy.
」というテキストが生成されますが、前述のコードよりも評価に時間がかかります。
<SETVAR NAME="mood" VALUE="happy"/> <p><CSVAR NAME="My dog is Variables.mood"/>.</p>
16.6.4.3 別の変数への単一変数値の割当て
1つの変数の値を別の変数に割り当てることができます。そのための方法は、XMLでコーディングする場合とJSPでコーディングする場合とで異なります。
JSP
JSPでコーディングする場合は、JSPタグを別のJSPタグ内にネストできないため、ics:getvar
タグを使用して変数の値を評価することはできません。この制限を回避するには、次のサンプル・コードで示すように、ics.GetVar
というJavaメソッドを使用して変数の値を置換します。
<ics:setvar name="myVar" value="Fred"/> <ics:setvar name="yourVar" value='<%=ics.GetVar("myVar")%>'/> <ics:getvar name="yourVar"/>
ノート:
変数の値を評価する式は、一重引用符で囲む必要があります(この例では'<%=icsGetVar("myVar")%>'
)。そうしないと、JSPエレメントによって例外がスローされます。
XML
次のXMLコードは、carambola
という値をyour_favorite
という変数に割り当てます。
<SETVAR NAME="my_favorite" VALUE="carambola"/> <SETVAR NAME="your_favorite" VALUE="Variables.my_favorite"/>
これをさらに一歩進めて、2つの変数値を連結して、その連結結果を3つ目の変数に割り当てることができます。たとえば、次のコードは、car
という変数をred rabbit
という値に設定します。
<SETVAR NAME="color" VALUE="red"/> <SETVAR NAME="model" VALUE="rabbit"/> <SETVAR NAME="car" VALUE="Variables.color Variables.model"/>
16.6.4.4 HTMLタグの変数
XML変数やJSP変数を従来のHTMLタグ内で使用できますが、そのためのコーディング方法はXMLの場合とJSPの場合とで異なります。
JSP
JSPでコーディングする場合は、ics:getvar
タグまたはics.GetVar
Javaメソッドを使用して変数の値を評価します。
ics.resolvevariables
タグを使用して、文字列に含まれた変数を解決することもできます。たとえば、次のコードは、「The date is」というフレーズとCS.Date
変数の値を組み合せて表示します。
<ics.resolvevariables name="The date is $(CS.Date)." delimited="true"/>
delimited
パラメータは、デリミタ$(
および)
を使用して、解決対象の変数を明示的にマークしていることを示します。たとえば、変数を使用してリスト名とそのリスト内の列を指定するには、次の構文を使用します。
<ics.resolvevariables
name="$(Variables.listname).$(Variables.columnname)" delimited="true"/>
delimited
パラメータがfalse
に設定されている場合は、変数を区切るためにデリミタが使用されていません。
XML
適切な属性を使用している場合は、HTMLタグ内でXML変数を使用できます。たとえば、次のコードには適切な属性が含まれていないため、背景色が赤に設定されません。
<SETVAR NAME="color" VALUE="red"/> <TABLE bgcolor="Variables.color"> ...
HTMLタグ内でXML変数の値を使用するには、そのHTMLタグ内でREPLACEALL
属性を使用する必要があります。REPLACEALL
属性は、このHTMLタグ内のこのXML変数の現行値を置換するようにシステムに指示します。したがって、前述の行の正しいコーディング方法は次のとおりです。
<SETVAR NAME="color" VALUE="red"/> <TABLE bgcolor="Variables.color" REPLACEALL="Variables.color"> ...
1つのREPLACEALL
属性内で複数の変数値を組み合せることができます。たとえば、次のHTMLタグTABLE
では、2つのXML変数が使用されています。
<SETVAR NAME="color" VALUE="red"/> <SETVAR NAME="myborder" VALUE="3"/> <TABLE bgcolor="Variables.color" border="Variables.myborder" REPLACEALL="Variables.color,Variables.myborder"> ...
<REPLACEALL>
タグは、REPLACEALL
属性の代替手段です。<REPLACEALL>
タグは、そのドメイン内で置換を実行します。たとえば:
<SETVAR NAME="highlight" VALUE="red"/> <SETVAR NAME="diminish" VALUE="gray"/> <REPLACEALL LIST="Variables.highlight,Variables.diminish"> <TABLE> <TR BGCOLOR="Variables.highlight"><TD>Diamonds</TD></TR> <TR BGCOLOR="Variables.highlight"><TD>Pearls</TD></TR> <TR><TD>Malachite</TD></TR> <TR BGCOLOR="Variables.diminish"><TD>Coal</TD></TR> </TABLE> </REPLACEALL>
この図は、このセクションの出力を示しています。
REPLACEALL
タグは文字列の検索と置換を実行するため、その処理には長い時間がかかる可能性があります。可能な場合は、REPLACEALL
属性を使用してください。REPLACEALL
タグを使用する必要がある場合は、このタグで囲むコードの量をできるだけ少なくしてください。
16.6.4.5 IF/THEN/ELSEを使用した変数の評価
WebCenter SitesのXMLとJSPでは、ほとんどのコンピュータ言語で使用可能なIF
/THEN
/ELSE
構文が用意されています。ただし、変数を対象にした唯一の条件付き演算は、2つの値を比較して一致または不一致を判定することのみです。たとえば、2つの値を比較して、一方が他方より大きいかどうかを判定できません。(ただし、この処理を実行するJavaコードは記述できます。)
たとえば、次のコードは、greeting
という変数の値に応じて分岐します。
<IF COND="Variables.greeting=Hello"> <THEN> <p>Welcome.</p> </THEN> <ELSE> <p>So long.</p> </ELSE> </IF>
greetingがHello
に設定されている場合は、WebCenter Sitesは次のHTMLを生成します。
<p>Welcome.</p>
greetingがHello
以外の値に設定されている場合は、WebCenter Sitesは次のように生成します。
<p>So long.</p>
16.6.5 変数と優先順位
URLを通じて設定された変数や、HTTPのGET
操作やPOST
操作を通じて設定された変数は、SiteCatalog
表やElementCatalog
表のresargs
列やresdetails
列を使用して設定された変数よりも優先されます。
16.6.6 変数に関するベスト・プラクティス
すべての変数はグローバルであり、リスト内のアイテムから変数にアクセスするための構文と他のソースから変数にアクセスするための構文は同じであるため、適切なコーディング手法はエラーを回避するのに役立ちます。たとえば:
-
エレメント内でベース名を再利用することは簡単なため、変数の前に接頭辞を付けてそれらの変数を一意に定義してください。推奨される構文は、
Variables.assettype:fieldname
です。たとえば、
Variables.Article:description
のようにします。ASSET.SCATTER
タグでは、そのPREFIX
属性を通じてこの構文を簡単に使用できます。このタグの詳細は、「テンプレートおよびCSElementのエレメントのコーディング」を参照してください。 -
RESOLVEVARIABLES
タグを使用して変数を解決しようとしている場合は、DELIMITED
パラメータをtrue
に設定して、デリミタ$(
および)
を使用して解決対象の変数を明示的に示してください。 -
デバッグを通じてネーミングの競合を検出してください。
loggingconfig.xml
のcom.fatwire.logging.cs
プロパティを設定します。このプロパティを有効にすると、WebCenter Sitesは、作成されたすべての変数のレコードをWebCenter Sitesのログ・ファイルに書き込みます。
WebCenter Sitesのタグによってerrno
変数に書き込むことができるエラー値のリストについては、『Oracle WebCenter Sitesリファレンス・タグ・リファレンス』を参照してください。
16.7 WebCenter Sitesの他の記憶域構成体
WebCenter Sitesは、ビルトイン、リスト、カウンタなどいくつかの記憶域構成体をサポートしています。
これらの構成体がどのようなもので、どのように定義できるのかについては、次のトピックを参照してください。
16.7.1 ビルトイン
WebCenter Sitesでは、現在日付などの値を返すいくつかのビルトインが用意されています。
ビルトインの一般的な構文は次のとおりです。
CS.builtin
たとえば、UniqueID
は一意のIDを生成するビルトインです。次の構文は、このビルトイン変数を生成または参照します。
CS.UniqueID
WebCenter Sitesのビルトインのリストについては、『Oracle WebCenter Sitesリファレンス・タグ・リファレンス』を参照してください。
16.7.2 リスト
リストは、行と列で編成された値の表からなります。SETROW
タグまたはGOTOROW
タグを使用して、適切な行を識別します。
次のエンティティはリストを作成します。
-
SELECTTO
タグ、EXECSQL
タグ、CATALOGDEF
タグ、STRINGLIST
タグおよびCALLSQL
タグ -
CatalogManager
のコマンド。 -
TreeManager
のコマンド。 -
Custom
タグ。
現在の行の列値を参照するには、次の構文を使用します。
listname.colname
たとえば、cars
という名前のリストにcolor
という名前の列が存在する場合、現在の行の値を参照するには次のようにします。
cars.color
16.7.2.1 リストのループ処理
リストを反復処理するには、LOOP
というXMLタグまたはics:listloop
というJSPタグを使用します。リスト内の各行について、WebCenter Sitesはこれらのループ・タグの内側に配置された命令を実行します。
たとえば、次の行が含まれたMyCars
という名前の表があるとします。
表16-10 行を含むサンプル表
id | モデル | 色 | 年 |
---|---|---|---|
224 |
Ford Focus |
blue |
2001 |
358 |
VW Rabbit |
赤 |
1998 |
359 |
Toyota Corolla |
黄 |
2000 |
372 |
Alpha Romeo Spider |
赤 |
1982 |
401 |
Porsche 911 |
赤 |
1984 |
423 |
Dodge Voyager |
茶 |
1991 |
次のXMLコードは、MyCars
内で赤色の車を検索します。SELECTTO
というXMLタグおよびJSPタグは、この情報をcarlist
という名前のリスト変数に書き込みます。
<SETVAR NAME="color" VALUE="red"/> <SELECTTO FROM="MyCars" WHERE="color" WHAT="*" LIST="carlist"/> Red cars: <BR/> <OL> <LOOP LIST="carlist"> <LI><CSVAR NAME="carlist.model"/> </LI> </LOOP> </OL>
このXMLコードは、次のHTMLを生成します。
Red cars: <BR/> <OL> <LI> VW Rabbit </LI> <LI> Alpha Romeo Spider </LI> <LI> Porsche 911 </LI> </OL>
16.7.3 カウンタ
カウンタは、整数値が格納されるXML変数です。カウンタは次の3つのタグによって制御されます。
表16-11 カウンタ
タグ | 主な機能 |
---|---|
|
カウンタ変数を初期化します |
|
カウンタの値を、指定された量のみ変更します |
|
カウンタ変数を破棄します |
カウンタを作成するには、SETCOUNTER
をコールします。カウンタの値を変更するには、INCCOUNTER
をコールします。たとえば、次のコードを考えてみましょう。
<SETCOUNTER NAME="c" VALUE="10"/> <INCCOUNTER NAME="c" VALUE="3"/> <p>Current value is <CSVAR NAME="Counters.c"/></p>
このコードの出力は次のとおりです。
Current value is 13
この例からわかるように、カウンタ変数を参照するには次の構文を使用します。
Counters.name
16.8 特殊文字の値について
XMLまたはJSPでは、特殊文字自体ではなく、特殊な(英数字以外の)文字を16進数文字で表現したものを使用します。たとえば、変数値の一部としてスペースを指定するには、<SETVAR NAME="foo" VALUE="foo%20bar"/>
という行を使用します。
次に、WebCenter Sitesでよく使用される特殊文字の16進値を示します。
表16-12 特殊文字の値
16進値 | 文字 |
---|---|
%22 |
二重引用符(") |
%20 |
単一の空白 |
%3c |
小なり記号(<) |
%3e |
大なり記号(>) |
%26 |
アンパサンド(&) |
%09 |
タブ(\t) |
%0a |
改行(\n) |
%0d |
改行(\r) |
%25 |
パーセント(%) |