83 WebCenter SitesのURLアセンブラの使用
WebCenter SitesのURLアセンブラは、URLアセンブリおよび逆アセンブリを管理します。それらに用意されているインタフェースを使用して、URLの外観を定義できます。
トピック:
WebCenter SitesのURLアセンブラについて
URLアセンブラをURL生成タグとともに使用して、WebCenter SitesのURLの生成や、URLの逆アセンブルを行うことができます。
URLアセンブラは、URL管理のレガシー・メソッドです。バニティURLが現在のメソッドであることを確認します。「WebページのバニティURLリンク」を参照してください。
トピック:
URLアセンブリ
WebCenter SitesのURL生成タグ(<satellite.link>、<satellite.blob>、<render.getpageurl>、<render.getbloburl>、<render.satelliteblob>、<rendergettemplateurl>
)は、ページやBLOBなど、WebCenter Sitesのリソースへのリンクの構成に使用されます。タグの使用時に指定するタグ属性やネストされた引数タグなどのデータは、URL定義と呼ばれる抽象オブジェクトに変換されます。URL定義はURLアセンブラに渡されます。次に、URLアセンブラはその定義を、返される文字列URLに変換します。
2つのアセンブラはWebCenter Sitesとともにインストールされますが、URLの外観を直接制御するために独自のアセンブラを作成するというオプションがあります。作成するアセンブラを使用できるようにするには、まずWebCenter Sitesにアセンブラを登録しておく必要があります。
デフォルトとして構成されているアセンブラは、WebCenter SitesのすべてのURLの作成に使用されます。デフォルトのアセンブラは変更できます。個々のリンク・タグで、このデフォルトのアセンブラの使用をオーバーライドすることもできます。
アセンブラ検出と逆アセンブリ
アセンブラは、アセンブラの作成者が求めるいずれのフォームでもURLを作成できるため、アセンブルされたリンクが要求される場合は、アプリケーション・サーバーによってURLをパラメータにデコードできない場合があります。デコードを実行するには、アセンブラが文字列URLをその定義に逆アセンブルできる必要があります。したがって、アセンブラは可逆性であり、アセンブルしたどのURLも逆アセンブルできます。
URLがデフォルトのアセンブラ以外のアセンブラを使用して作成されている場合は、デフォルトのアセンブラはそのURLを逆アセンブルできません。その時点で、次の上位ランクのアセンブラがそのURLの逆アセンブルを試みます。定義の作成に成功した場合は、アセンブラ・エンジンがそのアセンブラを検出しており、定義がパラメータに変換されて処理されます。次の上位ランクのアセンブラがそのURLの逆アセンブルに失敗した場合は、3番目の上位ランクのアセンブラがコールされ、そのURLを逆アセンブルします。このプロセスは、URLが逆アセンブルに成功するまで続行します。このプロセスでは、アセンブラが、アセンブルしたURLを自己のものであると認識し、他のすべてのURLを外部のものであると認識できることが必要です。
「アセンブラの作成」および「アセンブラの登録とランク付け」を参照してください。
GETリクエストとPOSTリクエストを使用するURLアセンブリとURL逆アセンブリ
URLアセンブラは、GET
リクエストでのみ呼び出されます。これらはPOST
リクエストでは呼び出されません。たとえば、GET
リクエストでページにアクセスする際、URLアセンブラが呼び出され、URLを逆アセンブルします。その後、WebCenter Sitesがそのページを開くために必要な適切なパラメータ(c
、cid
、pagename
など)を定義に追加することで提供します(定義に存在しない場合)。ただし、method=post
を使用したフォームなどのリクエストがPOST
される場合は、URLアセンブラはURLの逆アセンブルには呼び出されません。したがって、WebCenter Sitesがページを開くために必要なパラメータは、postリクエスト自体の一部である必要があります。
これは、ページのテンプレートまたはエレメントに次のタグをエンコードすることで実行できます(サンプル値を、WebCenter SitesがページのURLに必要とするパラメータに置換)。
<satellite:form method="post" id="assetid">
<render:gettemplateurlparameters list="args" ... /><!-- add all parameters that are normally part of a URL -->
<ics:listloop listname="args">
<input type="hidden" name="<string:stream list="args" column="name"/>" value="<string:stream list="args" column="value"/>"/>
</ics:listloop>
WebCenter Sitesとともにインストールされるアセンブラ
WebCenter Sitesとともにインストールされる2つのアセンブラは、QueryアセンブラとQueryAsPathInfoアセンブラです。Queryアセンブラは問合せ文字列を使用してURLを作成しますが、QueryAsPathInfoアセンブラは問合せ文字列をエンコードし、サーブレット名の末尾に付加します。
トピック:
Queryアセンブラ
Queryアセンブラは、問合せ文字列でURLを作成します。これはデフォルトのアセンブラで、WebCenter Sitesに自動的に登録されています。したがって、(デフォルトのアセンブラの変更やリンク・タグにおけるデフォルトのオーバーライドなどを)変更するまで、QueryアセンブラはすべてのURLの生成に使用されます。
アセンブラの使用
アセンブラの作成
WebCenter SitesのURLアセンブリ・モジュールを使用して、独自のアセンブラを作成できます。このオプションにより、URLの外観を直接制御できます。
アセンブラを作成するには::
アセンブラの登録とランク付け
URLの作成にアセンブラを使用できるようにするには、まずWebCenter Sitesに登録しておく必要があります。登録は、ショート・フォームに対応するアセンブラ・クラス名をプロパティ・ファイルに列記することで実行されます。登録には、アセンブラの使用順序を示すランキングも含まれます。
アセンブラを登録するには::
WebページのバニティURLリンク
アセットに、name引数で渡されたテンプレートのバニティURLが含まれていると、<render:gettemplateurl>
タグはバニティURLを返します。アセットにバニティURLが含まれていない場合、タグはWebCenter SitesのURLを返します。
<render:gettemplateurl>
タグは、バニティURLリンクの生成に使用できます。これにより、リダイレクトされるURLは、常にバニティURL (存在する場合)を返すようになります。このような場合に既存のリンクにアクセスすると(たとえば、ブックマークから)、それ以降のすべてのURLはバニティURLになります。
特定のWebRootに対するバニティURLを生成するには、webrootname
という追加のオプション属性をタグrender: gettemplateurl
に渡す必要があります。タグ属性webrootname
の値は、WebRootのhostname
属性と一致する必要があります。これは、別のWebサイトや、同一Webサイト内のサブドメインへのリンクを生成するために使用されます。たとえば:
<render:gettemplateurl outstr="pageURL" webrootname=<name of WebRoot used for retrieving URL> tname='<%=ics.GetVar("template")%>' args="c,cid" />