PageReference クラス
名前空間
- ページのクエリ文字列パラメーターおよび値を表示または設定する
- ユーザーを action メソッドの結果として異なるページにナビゲートする
インスタンス化
-
組織ですでに保存している Visualforce ページの PageReference を参照します。このプラットフォームはこのようにページを参照することで、コントローラーまたはコントローラー拡張が指定されたページの有無に依存することを認識し、コントローラーまたは拡張が存在する間はページが削除されないようにします。
-
Lightning プラットフォームでホストされる任意のページに PageReference を作成します。たとえば、'partialURL' を '/apex/HelloWorld' に設定すると、http://mySalesforceInstance/apex/HelloWorld にある Visualforce ページを参照します。同様に、'partialURL' を '/' + 'recordID' に設定すると、指定したレコードの詳細ページを参照します。
この構文は、PageReference はコンパイル時ではなく、実行時に構成されるため、Page.existingPageName のページ以外の Visualforce ページの参照にはお推めしません。実行時の参照は、参照整合性システムには使用できません。したがって、プラットフォームはこのコントローラーまたはコントローラー拡張機能が指定されたページの有無に依存することを認識しないため、ユーザーによるページの削除を防ぐためにエラーメッセージを表示しません。
-
外部 URL の PageReference を作成します。次に例を示します。
要求ヘッダー
次の表に、要求時に設定される一部のヘッダーを示します。
| ヘッダー | 説明 |
|---|---|
| Host | 要求 URL で要求されるホスト名です。このヘッダーは、常に Lightning プラットフォームサイト要求および「私のドメイン」要求に設定されます。また、HTTP/1.1 ではなく、HTTP/1.0 を使用する場合、その他の要求ではこのヘッダーは省略可能です。 |
| Referer | 現在の要求の URL に含まれるか、リンクされた URL です。このヘッダーは省略可能です。 |
| User-Agent | この要求を開始したプログラム (Web ブラウザーなど) の名前、バージョン、拡張子のサポートです。このヘッダーは省略可能で、ほとんどのブラウザーで別の値に上書きできます。そのため、信頼できるヘッダーではありません。 |
| CipherSuite | このヘッダーが存在し、空白以外の値である場合、要求には HTTPS が使用されています。それ以外の場合、要求には HTTP が使用されています。空白以外の値の内容はこの API で定義するものではなく、予告なく変更される場合があります。 |
| X-Salesforce-SIP | 要求の要求元 IP アドレスです。このヘッダーは、Salesforce のデータセンター外で開始された HTTP 要求と HTTPS 要求に常に設定されます。 |
| X-Salesforce-Forwarded-To | この要求を処理している Salesforce インスタンスの完全修飾ドメイン名です。このヘッダーは、Salesforce のデータセンター外で開始された HTTP 要求と HTTPS 要求に常に設定されます。 |
例: クエリ文字列パラメーターの取得
次の例では、PageReference オブジェクトを使用して、現在の URL のクエリ文字列パラメーターを取得する方法を示します。この例では、getAccount メソッドは id クエリ文字列パラメーターを参照します。
次のページマークアップは、上記のコントローラーから getAccount メソッドをコールします。
getAccount メソッドは、埋め込み SOQL クエリを使用して、ページの URL の id パラメーターで指定した取引先を返します。id にアクセスするために、getAccount メソッドは次のように ApexPages 名前空間を使用します。
- まず、currentPage メソッドが現在のページの PageReference インスタンスを返します。PageReference は、クエリ文字列パラメーターなど、Visualforce ページへの参照を返します。
- ページ参照に基づいて、getParameters メソッドを使用して、指定されたクエリ文字列パラメーターの名前と値の対応付けを返します。
- 次に、id を指定する get メソッドのコールにより、id パラメーター自体の値を返します。
例: action メソッドの結果として新しいページに移動
カスタムコントローラーまたはコントローラー拡張の action メソッドはいずれも、メソッドの結果として PageReference オブジェクトを返すことができます。PageReference の redirect 属性を true に設定すると、PageReference が指定した URL に移動します。
次の例では、save メソッドでこの移動を実装する方法を示します。この例では、save メソッドで返された PageReference によって、ユーザーは新たに保存した取引先レコードの詳細ページに移動させます。
次のページマークアップは、上記のコントローラーから save メソッドをコールします。ユーザーが [保存] をクリックすると、新たに作成した取引先の詳細ページに移動します。
例: ユーザーを代替 Experience Cloud サイトにリダイレクト
この例は、廃止されたフィードバックサイトにアクセスしようとしているユーザーをセルフサービスヘルプサイトにリダイレクトする方法を示しています。フィードバックサイトの PageReference の redirect 属性を true に設定すると、PageReference が指定した URL に移動します。redirectCode 属性では、公開 Experience Cloud サイトの検索エンジンを最適化するために、リダイレクトのタイプを定義します。
次の例では、廃止されたサイトページから RedirectController クラスをコールする方法を示します。