Playframeworkのデモを試してみるその6 - モデルの操作、更新

今日は少しだけ、タスクの更新
done フラグを有効にしたりしなかったり。

Taskの更新

チェックボックス押下時の挙動を追記

app/views/Application/index.html の javascript として
チェックボックス押下時の挙動を追記する

    // change status
    $('input').live('click', function() {
        $.post('@{changeStatus()}', {id: $(this).attr('id'), done: $(this).val()})
    })

これでチェックボックス押下時に changeStatus アクションが
実行されるようになった、引数には id と done が渡される。

changeStatus アクションを定義

そして app/controllers/Application.java に changeStatus アクションを定義する。

    public static void changeStatus(Long id, boolean done) {
        Task task = Task.findById(id);
        task.done = done;
        task.save();
        renderJSON(task);
    }

Task クラスの static メソッド findById(id) によってインスタンスを検索している
検索されたインスタンスに対して done 属性を設定して save メソッドで保存
最後は JSON として該当インスタンスをレンダしている。

修正したら http://localhost:9000/ をブラウザで開いて確認する。
現在登録されているタスクのチェックボックスをチェックしてみる、
画面上では変化がないけど、画面を F5 で最新の状態に更新すると
チェックしたタスクの状態が保存されていることが確認できる。