この文章は 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 ページの実行順序の例」を参照してください。