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 メソッドをコールします。ユーザが [保存] をクリックすると、新たに作成した取引先の詳細ページに移動します。
例: ユーザを代替コミュニティにリダイレクト
この例は、廃止されたフィードバックコミュニティにアクセスしようとしているユーザをセルフサービスヘルプコミュニティにリダイレクトする方法を示しています。フィードバックコミュニティへの PageReference の redirect 属性を true に設定すると、PageReference が指定した URL に移動します。redirectCode 属性では、公開サイトおよびコミュニティの検索エンジンを最適化するために、リダイレクトのタイプを定義します。
次の例では、廃止されたコミュニティ ページから RedirectController クラスをコールする方法を示します。