Playframeworkのデモを試してみるその4 - モデルの操作、設定と表示

すごく間が空いた、タイトルは伊達じゃない。

Taskモデルを作成

Package Explorer からツリーをたどる、
Tasks => app => models => 右クリック => New => Class
ダイアログで Name に Task で Finish
Task.java が作成される。

Task.java のコードはこんな感じ

package models;

import play.*;
import play.db.jpa.*;

import javax.persistence.*;
import java.util.*;

@Entity
public class Task extends Model {

    public String title;
    public boolean done;

    public Task(String title) {
        this.title = title;
    }
}

コントローラでモデルを利用する

続いて app/controllers/Application.java を修正

package controllers;

import java.util.*;
import play.mvc.*;

import models.*;

public class Application extends Controller {

    public static void index() {
        List tasks = Task.find("order by id desc").fetch();
        render(tasks);
    }

}

ビュー定義の修正

続いて app/views/Application/index.html を修正

#{extends 'main.html' /}
#{set title:'Home' /}

#{ifnot tasks}
    <p>
        No tasks
    </p>
#{/ifnot}

<ul>
    #{list items:tasks, as:'task'}
        <li>
            <input type="checkbox" id="${task.id}" ${task.done ? 'checked' : ''}></input>}
            ${task.title}
        </li>
    #{/list}
</ul>

ブラウザで確認する。

前と同様、プロジェクトルートからディレクトリをもぐり、
tasks/eclipse/Tasks.launch を右クリック => Run As => Tasks でサーバ起動
その後ブラウザで http://localhost:9000 ・・・エラー
データベースの設定がされていないよとグズっています。
というわけでデータベース設定

conf/application.conf の 70行目前後
db=mem の記述、行頭の # を取ります。

# Database configuration
# ~~~~~ 
# Enable a database engine if needed.
#
# To quickly set up a development database, use either:
#   - mem : for a transient in memory database (HSQL in memory)
#   - fs  : for a simple file written database (HSQL file stored)
db=mem
#
# To connect to a local MySQL5 database, use:
# db=mysql:user:pwd@database_name

ちなみにここで db=mem を設定しているのは HSQL ってデータベースに接続している
設定値として db=mem を与えることで
一時的(サーバを終了すると消える)データベースを使用する事を意味する。

設定後、再び http://localhost:9000 にアクセスすると
No tasks の文字が表示される、成功
現時点で1件のタスクも登録されていないからこれが表示されている

さて、とりあえずここまで。