コントローラーとビューを使おう![Scala編] (5/5)
作成:2013-01-21 08:12
更新:2013-01-21 08:12
更新:2013-01-21 08:12
■リダイレクト・問題発生時のリクエスト処理
アクションメソッドでは、基本的に指定のテンプレートをそのままOkでレンダリングし返すようになっていました。が、そうした「指定のテンプレートを返す」という処理以外のケースもあります。Ok以外の関数の利用についていくつか補足しておきましょう。
●リダイレクト
アクションでは、必要に応じて読み込むテンプレートを変更したりできますから、状況に応じた表示を用意することは可能です。が、場合によっては、別のアクションにそのままリダイレクトしたい時もあるでしょう。こうした場合には、「Redirect」関数を使います。これは以下のように利用します。
例えば、「formアクションにアクセスしたらindexにリダイレクトする」というような処理を作りたければ、以下のようにすればよいでしょう。
●バッドリクエスト
Okは、問題なくページが処理された場合の表示です。が、リクエストに何か問題があったことを示す場合には、代りに「BadRequest」というメソッドを使います。これは以下のように呼び出します。
●リダイレクト
アクションでは、必要に応じて読み込むテンプレートを変更したりできますから、状況に応じた表示を用意することは可能です。が、場合によっては、別のアクションにそのままリダイレクトしたい時もあるでしょう。こうした場合には、「Redirect」関数を使います。これは以下のように利用します。
Redirect(《Call》)引数には、play.api.mvc.Callオブジェクトというものを引数に指定します。このオブジェクトは、routesオブジェクトにあるコントローラー名のプロパティから、メソッド名のメソッドを呼び出すことで得ることができます。といってもなんだかよくわからないですね。例えば、Applicationコントローラーのhogeアクションならば、routes.Application.hoge()というメソッドを呼び出せば、hogeアクションのCallが得られる、というわけです。
例えば、「formアクションにアクセスしたらindexにリダイレクトする」というような処理を作りたければ、以下のようにすればよいでしょう。
def form = Action {
Redirect(routes.Application.index())
}
●バッドリクエスト
Okは、問題なくページが処理された場合の表示です。が、リクエストに何か問題があったことを示す場合には、代りに「BadRequest」というメソッドを使います。これは以下のように呼び出します。
BadRequest( 表示内容 )基本的な使い方はOkと同じです。例えば、formアクションにアクセスした時、問題が発生したことを伝えるならば、こんな具合にすればよいでしょう。
def form = Action {バッドリクエストの使い方はいろいろと考えられますが、例えばフォームの送信などで送信内容に問題があった場合、などに利用することができるでしょう。
val title = "エラー!"
val msg = "※管理者にお問い合わせください。"
BadRequest(views.html.index(title, msg))
}
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
●リスト1――リダイレクトの例 def form = Action { Redirect(routes.Application.index()) } ●リスト2――バッドリクエストの場合 def form = Action { val title = "エラー!" val msg = "※管理者にお問い合わせください。" BadRequest(views.html.index(title, msg)) }
※関連コンテンツ