43.91 PREPARE_URLファンクション

ノート:

読みやすくするために、PREPARE_URLのかわりにAPEX_PAGE.GET_URLを使用することをお薦めします。

See GET_URLファンクション.

PREPARE_URLファンクションは、次の2つの目的で使用されます。

  1. 必要に応じて、セッション・ステート保護チェックサム引数(& cs=)を含むApplication ExpressナビゲーションURLを返すため。セキュリティのため、指定したアプリケーションが別のワークスペースにある場合、URLにチェックサムは含まれません。

  2. セッションIDコンポーネントが0 (ゼロ)に置換されたApplication ExpressナビゲーションURLを返すため(ゼロ・セッションID機能が使用され、他の条件が満たされている場合)

ノート:

PREPARE_URLファンクションは、&cs=<large hex value>が追加されたApplication ExpressナビゲーションURLを返します。この戻り値(JavaScriptなど)を使用する場合は、特定のコンテキストの構文規則に準拠するために、URLのアンパサンドをエスケープする必要がある場合があります。

構文

APEX_UTIL.PREPARE_URL (
    p_url                    IN VARCHAR2,
    p_url_charset            IN VARCHAR2 default null,
    p_checksum_type          IN VARCHAR2 default null,
    p_triggering_element     IN VARCHAR2 default 'this'
    p_plain_url              IN BOOLEAN  default false 
RETURN VARCHAR2;

パラメータ

表43-75 PREPARE_URLのパラメータ

パラメータ 説明

p_url

すべての置換が解決されたApplication ExpressナビゲーションURL。

p_url_charset

引数値に含まれている特殊文字をエスケープする場合に使用する文字セット名(UTF-8など)

p_checksum_type

Nullまたは次のいずれかの値。

  • PUBLIC_BOOKMARKまたは1: 任意のユーザーによって使用されるリンクを生成する場合に使用します。たとえば、アプリケーションへのリンクを含む電子メールを生成する場合に、この値を使用します。

  • PRIVATE_BOOKMARKまたは2: 現在のセッションの外部で使用されるリンクを生成する場合に使用します。このオプションは、現在認証されている同じユーザーのみが使用できます。

  • SESSIONまたは3: アプリケーションへのリンクを生成する場合に使用します。このオプションは、現在のセッション内でのみ使用できます。

p_triggering_element

ダイアログのトリガーに使用する要素を特定するjQueryセレクタ(たとえば#my_buttonmy_buttonはボタン要素の静的ID)。これは、モーダル・ダイアログのサポートに必要です。

p_plain_url

APEX_UTIL.PREPARE_URLのコール元のページがモーダル・ダイアログの場合に、p_plain_urlを指定して、生成されるリンク内の不要なJavaScriptコードを省略します。デフォルトでは、このファンクションがモーダル・ダイアログからコールされている場合、モーダル・ダイアログを閉じるためのJavascriptコードは生成したURLに含まれています。

例1

次の例に、PREPARE_URLファンクションを使用して、有効なSESSIONレベルのチェックサム引数が指定されたURLを戻す方法を示します。このURLによって、P1_ITEMページ・アイテムの値がxyzに設定されます。

DECLARE
    l_url varchar2(2000);
    l_app number := v('APP_ID');
    l_session number := v('APP_SESSION');
BEGIN
    l_url := APEX_UTIL.PREPARE_URL(
        p_url => 'f?p=' || l_app || ':1:'||l_session||'::NO::P1_ITEM:xyz',
        p_checksum_type => 'SESSION');
END;

例2

次の例に、PREPARE_URLファンクションを使用して、セッションIDが0 (ゼロ)のURLを戻す方法を示します。f?p URL (アンカー)を生成する「PL/SQL動的コンテンツ」リージョンでは、PREPARE_URLをコールして、ゼロ・セッションID機能が使用されている場合、ユーザーが(認証されていない)パブリック・ユーザーの場合およびターゲット・ページがカレント・アプリケーションのパブリック・ページである場合にセッションIDが0 (ゼロ)に設定されることを確認します。

htp.p(APEX_UTIL.PREPARE_URL(p_url => 'f?p=' || :APP_ID || ':10:'|| :APP_SESSION
||'::NO::P10_ITEM:ABC');

この目的でPREPARE_URLを使用する場合は、p_url_charsetおよびp_checksum_type引数を省略できます。ただし、セッション・ステート保護機能とゼロ・セッションID機能の両方を適用できる場合は、これらの引数を使用できます。

参照:

Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドブックマークのサポートの有効化について