PersonDataのコントローラー
では、PersonDataを利用するためのコントローラーを作成しましょう。「controllers」フォルダに、新たに「Person.java」というファイルを用意します。ここにコントローラーを記述していきます。今回は、とりあえずデータの作成と一覧表示を行うaddとindexという2つのアクションメソッドだけ用意することにしましょう。
package controllers;
import java.util.List;
import play.mvc.Controller;
import models.*;
public class Person extends Controller {
public static void index(String name) {
List<PersonData> datas = null;
datas = PersonData.findAll();
render(datas);
}
public static void add(String name,String mail){
String msg = "データを入力下さい。";
if (request.method.equals("POST")) {
PersonData person = new PersonData(name,mail);
person.save();
msg = "データを保存しました。";
}
render(msg);
}
}
いずれも、既に説明したものなので分かるでしょう。indexの処理では、findAllで全データを取得し、それを引数に渡してrenderを呼び出します。addは、request.method.equals("POST")をチェックし、POSTで送信されたならば、PersonDataインスタンスを作成し、saveで保存をします。
PersonData用テンプレートの用意
続いて、これらのアクション用テンプレートを作成します。「views」フォルダ内に、新たに「Person」というフォルダを用意します。そしてその中に「index.html」「add.html」という2つのファイルを作成します。
・index.htmlのリスト
#{extends 'main.html' /}
#{set title:'Home' /}
<h1>メッセージ表示</h1>
#{list items:datas, as:'data'}
<li>${data.id}: ${data.name}(${data.mail})</li>
#{/list}
・add.htmlのリスト
#{extends 'main.html' /}
#{set title:'Home' /}
<h1>メッセージの作成</h1>
${msg}
<form method="post" action="@{Person.add}">
<table>
<tr><td>name:</td><td><input type="text" id="name" name="name" /></td></tr>
<tr><td>mail:</td><td><input type="text" id="mail" name="mail" /></td></tr>
<tr><td></td><td><input type="submit" value="送信" /></td></tr>
</table>
</form>


これでPersonDataを利用するためのファイルはできました。まずはhttp://localhost:9000/person/addにアクセスをし、データをいくつか登録してみましょう。そしてhttp://localhost:9000/person/indexに移動すると、登録したPersonDataが一覧で表示されます。
index.htmlでは、indexアクションメソッドでPersonDataのListがrenderに渡されていましたから、これを利用して全データを表示しています。#{list items:datas, as:'data'}でdatasからオブジェクトを順に変数dataへと取り出して処理しています。ほとんど新しく登場した機能はないため、説明は不要でしょう。
