libro
www.tuyano.com
初心者のためのPlay Framework入門

コントローラーとビューを使おう![Scala編] (5/5)

作成:2013-01-21 08:12
更新:2013-01-21 08:12

■リダイレクト・問題発生時のリクエスト処理

アクションメソッドでは、基本的に指定のテンプレートをそのままOkでレンダリングし返すようになっていました。が、そうした「指定のテンプレートを返す」という処理以外のケースもあります。Ok以外の関数の利用についていくつか補足しておきましょう。

●リダイレクト
アクションでは、必要に応じて読み込むテンプレートを変更したりできますから、状況に応じた表示を用意することは可能です。が、場合によっては、別のアクションにそのままリダイレクトしたい時もあるでしょう。こうした場合には、「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))
}
バッドリクエストの使い方はいろいろと考えられますが、例えばフォームの送信などで送信内容に問題があった場合、などに利用することができるでしょう。

※プログラムリストが表示されない場合

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))
}

※関連コンテンツ

「初心者のためのPlay Framework入門」に戻る