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件のタスクも登録されていないからこれが表示されている
さて、とりあえずここまで。