Extension - 概念 - PRGパターン

Teeda Extensionは, 画面遷移にPRG (POST-REDIRECT-GET) パターンを採用しています.

PRGパターンとは, POSTメソッドによるリクエストに対してリダイレクトを返し, GETメソッドの応答として遷移先の画面を表示するというものです.

ページモデルを採用した場合, 画面遷移の際にブラウザのアドレスバーに表示されるURLと, 実際に表示されている内容がずれる場合があります.

以下の例では,aaa.htmlのフォームをサブミットしてbbb.htmlに画面遷移します.

URLのズレ

aaa.htmlに対応するAaaPageから, bbb.htmlに対応するBbbPageに (Servlet APIの) forwardで画面遷移すると,ブラウザのアドレスバーにはリクエストしたURLであるaaa.htmlが表示されたままですが, 表示されている内容はbbb.htmlとなります.

Teedaでは,PRGパターンを採用することにより, 画面遷移しても画面遷移の際にブラウザのアドレスバーに表示されるURLと, 実際に表示されている内容がずれないようにしています.

以下の例では,aaa.htmlのフォームをサブミットしてbbb.htmlに画面遷移します.

PRGパターンの場合

aaa.htmlに対応するAaaPageは, bbb.htmlへのリダイレクトをレスポンスとして返します. そのため,ブラウザはbbb.htmlをGETメソッドで要求し,その結果としてbbb.htmlが表示されます. ブラウザのアドレスバーはリダイレクト先であるbbb.htmlとなるため, 表示内容とのズレが発生しません.

また,PRGパターンで表示される画面はGETリクエストの結果であるため, 通常ブラウザは画面をキャッシュすることが可能です. このため, 「戻る」「進む」ボタンが有効であり, 意図しない二重サブミットを防ぐことができます.

PRGパターンが使われるのは, 他の画面に遷移する場合だけです. ポストバックされた画面がもう一度同じ画面を表示する場合はPRGパターンを使わず, 直接レスポンスを返します.

次画面表示の場合