この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

PageReference クラス

PageReference は、ページのインスタンス化への参照です。多数の属性の 1 つである PageReferences は URL、一連のクエリパラメータ名および値で構成されます。

名前空間

System

PageReference オブジェクトは次の目的で使用します。
  • ページのクエリ文字列パラメータおよび値を表示または設定する
  • ユーザを action メソッドの結果として異なるページにナビゲートする

インスタンス化

カスタムコントローラまたはコントローラ拡張では、次のいずれかの方法で、PageReference を参照またはインスタンス化できます。
  • 1Page.existingPageName

    組織ですでに保存している Visualforce ページの PageReference を参照します。このプラットフォームはこのようにページを参照することで、コントローラまたはコントローラ拡張が指定されたページの有無に依存することを認識し、コントローラまたは拡張が存在する間はページが削除されないようにします。

  • 1PageReference pageRef = new PageReference('partialURL');

    Lightning プラットフォームでホストされる任意のページに PageReference を作成します。たとえば、'partialURL''/apex/HelloWorld' に設定すると、http://mySalesforceInstance/apex/HelloWorld にある Visualforce ページを参照します。同様に、'partialURL''/' + 'recordID' に設定すると、指定したレコードの詳細ページを参照します。

    この構文は、PageReference はコンパイル時ではなく、実行時に構成されるため、Page.existingPageName のページ以外の Visualforce ページの参照にはお推めしません。実行時の参照は、参照整合性システムには使用できません。したがって、プラットフォームはこのコントローラまたはコントローラ拡張機能が指定されたページの有無に依存することを認識しないため、ユーザによるページの削除を防ぐためにエラーメッセージを表示しません。

  • 1PageReference pageRef = new PageReference('fullURL');

    外部 URL の PageReference を作成します。次に例を示します。

    1PageReference pageRef = new PageReference('http://www.google.com');
currentPage ApexPages メソッドを使用して、現在のページの PageReference オブジェクトをインスタンス化することもできます。次に例を示します。
1PageReference pageRef = ApexPages.currentPage();

要求ヘッダー

次の表に、要求時に設定される一部のヘッダーを示します。

ヘッダー 説明
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 要求に常に設定されます。

要求が Content Delivery Network (CDN) またはプロキシサーバを通過する場合、要求元 IP アドレスは変更されて元のクラ��アント IP アドレスとは同じではなくなっている可能性があります。

メモ

X-Salesforce-Forwarded-To この要求を処理している Salesforce インスタンスの完全修飾ドメイン名です。このヘッダーは、Salesforce のデータセンター外で開始された HTTP 要求と HTTPS 要求に常に設定されます。

例: クエリ文字列パラメータの取得

次の例では、PageReference オブジェクトを使用して、現在の URL のクエリ文字列パラメータを取得する方法を示します。この例では、getAccount メソッドは id クエリ文字列パラメータを参照します。

1public class MyController {
2   public Account getAccount() {
3        return [SELECT Id, Name FROM Account
4                WHERE Id = :ApexPages.currentPage().getParameters().get('Id')];
5    }
6}

次のページマークアップは、上記のコントローラから getAccount メソッドをコールします。

1<apex:page controller="MyController">
2    <apex:pageBlock title="Retrieving Query String Parameters">
3        You are viewing the {!account.name} account.
4    </apex:pageBlock>
5</apex:page>
この例が正しく機能するためには、Visualforce ページを URL の有効な取引先レコードに関連付ける必要があります。たとえば、001D000000IRt53 が取引先 ID の場合、次の URL を使用します。
1https://Salesforce_instance/apex/MyFirstPage?id=001D000000IRt53

メモ

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 によって、ユーザは新たに保存した取引先レコードの詳細ページに移動させます。

1public class mySecondController {
2    Account account;
3
4    public Account getAccount() {
5        if(account == null) account = new Account();
6        return account;
7    }
8
9    public PageReference save() {
10        // Add the account to the database. 
11        insert account;
12        // Send the user to the detail page for the new account.
13        PageReference acctPage = new ApexPages.StandardController(account).view();
14        acctPage.setRedirect(true);
15        return acctPage;
16    }
17}

次のページマークアップは、上記のコントローラから save メソッドをコールします。ユーザが [保存] をクリックすると、新たに作成した取引先の詳細ページに移動します。

1<apex:page controller="mySecondController" tabStyle="Account">
2    <apex:sectionHeader title="New Account Edit Page" />
3    <apex:form>
4        <apex:pageBlock title="Create a New Account">
5            <apex:pageBlockButtons location="bottom">
6                <apex:commandButton action="{!save}" value="Save"/>
7            </apex:pageBlockButtons>
8            <apex:pageBlockSection title="Account Information">
9                <apex:inputField id="accountName" value="{!account.name}"/>
10                <apex:inputField id="accountSite" value="{!account.site}"/>
11            </apex:pageBlockSection>
12       </apex:pageBlock>
13    </apex:form>
14</apex:page>

例: ユーザを代替コミュニティにリダイレクト

この例は、廃止されたフィードバックコミュニティにアクセスしようとしているユーザをセルフサービスヘルプコミュニティにリダイレクトする方法を示しています。フィードバックコミュニティへの PageReference の redirect 属性を true に設定すると、PageReference が指定した URL に移動します。redirectCode 属性では、公開サイトおよびコミュニティの検索エンジンを最適化するために、リダイレクトのタイプを定義します。

1public class RedirectController {
2    // Redirect users to the self-service help Community
3    public PageReference redirect() {
4        final PageReference target = new
5        PageReference(Site.getBaseSecureUrl() + '/SiteLogin');
6        target.setRedirect(true);
7        // This is a permanent redirection
8        target.setRedirectCode(301);
9        return target;
10    }
11}

次の例では、廃止されたコミュニティページから RedirectController クラスをコールする方法を示します。

1<apex:page controller="RedirectController" action="{!redirect}"/>