Play 2.xのScala Templatesでビュー&フォーム操作:Scala+Play 2.0でWebアプリ開発入門(6)(3/3 ページ)
2.0からScalaに対応したWebアプリ開発の人気軽量フレームワーク「Play」について解説し、Webアプリの作り方を紹介する入門連載。今回は、Play 2.xでビューを表現するための機能「Scala Templates」と、フォームを用いてデータをやりとりする方法を解説します。
入力チェックを追加してみる
フォーム入力はできるようになりましたが、入力チェック(制約)も実装したいところです。フォームに制約を組み込む場合、mapping関数でバインドの際に実行されるバリデート処理を指定できます。UserControllerのフォーム定義を次のように修正しましょう。
val userForm = Form( mapping( "name" -> nonEmptyText, "email" -> email)(User.apply)(User.unapply))
nameフィールドは必須入力、emailフィールドはメールアドレス形式と定義しています。これ以外にも多数のバリデート処理がありますので、APIドキュメントで確認してみてください。
さて、フォーム定義を修正したら、サブミット時の関数も修正します。先ほどはbindFromRequest.getでフォーム入力値をそのまま取得していましたが、今回はfold関数を使用しています。この関数は2つの引数を取り、1つ目が入力チェックエラー時の処理、2つ目が入力チェックに問題がなかったときの処理です。
def entrySubmit = Action { implicit request => userForm.bindFromRequest.fold( errors => { println("error!") BadRequest(views.html.user.entry(errors)) }, success => { println("entry success!") Ok(views.html.user.entrySubmit()) }) }
入力チェックエラーが発生したときは、エラー情報が入ったフォームを渡してBadRequestでレスポンスを返しています。
コントローラを修正したら、もう一度登録画面を開いて確認してみましょう。不正な入力をすると、入力チェックエラーで元の画面に戻ってきて、その旨が表示されます。
この章では、フォームや入力チェックについて基本的な使い方を紹介しました。さらに詳細な内容は、公式ドキュメントのフォームの送信をご確認ください。
次回はPlay 2.xでデータベースを扱う方法
今回はScala Templatesの使い方から始まり、Formオブジェクトを使用してデータを送信する方法、さらには入力チェックを組み込む方法を紹介しました。
フォームでは、テンプレートヘルパをカスタマイズして使用することで、いろいろな使い方ができるようになります。
例えば、「Twitter Bootstrap」に対応する方法も公式サイトに掲載されているので、興味がある方は試してみてください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
次回は、Play 2.xでデータベースを扱う方法を紹介する予定です。
- Play2プラグインのインストールと使用と新規開発
- Play2+nginx/Akka/WebSocketで高速双方向通信
- Play2(+JavaScript)アプリを高速化、最適化する4つのテクニック
- Play2におけるJSONおよびCoffeeScriptの使い方
- Playのグローバルな設定&spec2でBDDなテスト
- Play 2.xからMySQLに接続してAnormでCRUD操作するには
- Play 2.xのScala Templatesでビュー&フォーム操作
- Play 2.1にアップグレードしてコントローラを使いこなす
- Playコントローラ/Action/HTTP Routerの基本的な使い方
- 便利なPlayコンソールとEclipseでのデバッグ方法
- Play 2.0のアーキテクチャとディレクトリ構成の基礎知識
- Play framework 2.0の概要/5つの特徴とScalaで作るための環境構築
著者プロフィール
中村修太(なかむら しゅうた)
クラスメソッド勤務の新しもの好きプログラマです。昨年、東京から山口県に引っ越し、現在はノマドワーカーとして働いています。好きなJazzを聴きながらプログラミングするのが大好きです。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- スケーラブルで関数型でオブジェクト指向なScala入門
Scalaの特徴を紹介し、基本構文や関数、クラスなど、Scalaの基本的な機能について解説する入門連載 - Javaの常識を変えるPlay framework入門
サーブレット/JSPを基にする重厚長大なJavaのWeb開発のイメージを変える軽量フレームワーク「Play」について解説し、Webアプリの作り方を紹介する入門連載