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

Visualforce ページの postback 要求の実行順序

postback 要求は、[保存] ボタンをクリックし、save アクションをトリガするなど、ユーザの操作によってページの更新が必要になった場合に発行されます。次の図は、postback 要求時の、Visualforce ページとコントローラ拡張またはカスタムコントローラクラスとのやり取りを示します。

postback 要求時の Visualforce ページとコントローラ拡張またはカスタムコントローラクラスとのやり取りを表す図
  1. postback 要求時にビューステートは復号化され、ページの値を更新するための基盤として使用されます。

    immediate 属性が true に設定されたコンポーネントでは、要求のこのフェーズが省略されます。つま���、アクションは実行されますが、入力に対する検証は実行されず、ページでのデータ変更は行われません。

    メモ

  2. ビューステートが復号化された後、式が評価され、カスタムコンポーネント用に定義されたコントローラの set メソッドを含む、コントローラとすべてのコントローラ拡張の set メソッドが実行されます。

    すべてのメソッドが正常に実行されない限り、これらのメソッドのコールによってデータが更新されることはありません。たとえば、メソッドの 1 つがプロパティを更新し、入力規則や不正なデータ型が原因でその更新が無効である場合、データは更新されず、ページが再表示されて該当のエラーメッセージが示されます。

  3. postback 要求をトリガしたアクションが実行されます。アクションが正常に完了すると、データが更新されます。postback 要求によってユーザが同じページに戻ると、ビューステートが更新されています。

    <apex:page> コンポーネントの action 属性は、postback 要求時には評価されません。get 要求時にのみ評価されます。

    メモ

  4. 生成された HTML がブラウザに送信されます。

postback 要求でページリダイレクトが指定されており、そのリダイレクト先が、リダイレクト元ページと同じコントローラ、およびリダイレクト元ページのコントローラ拡張の正しいサブセットを使用するページである場合、postback 要求がそのページに対して実行されます。リダイレクト先がそのようなページでない場合、そのページに対して get 要求が実行されます。postback 要求に <apex:form> コンポーネントが含まれる場合、postback 要求の ID クエリパラメータのみが返されます。

pageReferencesetRedirect 属性を使用して、postback 要求または get 要求のどちらが実行されるかを制御できます。setRedirect が true に設定されている場合、get 要求が実行されます。これを false に設定しても、ターゲットが同じコントローラと正しい拡張のサブセットを使用している場合にのみ postback 要求が実行されるという制限は無視されません。setRedirect を false に設定した場合、ターゲットがこれらの要件を満たさなければ get 要求が実行されます。

ヒント

ユーザが別のページにリダイレクトされると、ビューステートとコントローラオブジェクトは削除されます。

postback 要求の具体的な例については、「Visualforce ページの実行順序の例」を参照してください。