libro
www.tuyano.com
初心者のためのPlay Framework入門

EBeanによるModelの作成[Java編] (4/5)

作成:2013-03-03 11:13
更新:2013-03-03 11:13

■レコードの一覧を表示する

では、続いて保管されているレコード情報を取り出してみましょう。今回は、先に作成したFinderの出番です。では、これもサンプルコードを先にあげておきましょう。(下のリスト欄参照)

今回は、先ほどのフォーム送信の下に、レコードの一覧表示の処理を追加しました。フォームを送信すると、その内容が追加されていくのがわかるでしょう。

ここでは、レコードの一覧を取得するのにコントローラー側(index内)で以下のような処理を行なっています。
List<SampleData> datas = SampleData.find.all();

たったこれだけ! SampleDataに用意しておいたFinderの「all」メソッドを呼び出すだけで、全SampleDataインスタンスがListにまとめて返されます。ビュー側では、これを元にテーブルを生成すればよいのです。
<table>
@for(data <- datas) {
    <tr>
        <td>@data.id</td>
        <td>@data.name</td>
        <td>@data.title</td>
        <td>@data.memo</td>
    </tr>
}
</table>

コントローラーから渡される変数dataから順にdataへとインスタンスを取り出していき、このdata内のフィールドを書き出していきます。テーブルの内容は既にSampleDataインスタンスの形になっていますから、好きなように扱えますね。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※Application.java

package controllers;

import java.util.*;

import com.avaje.ebean.*;
import models.*;
import play.*;
import play.mvc.*;
import play.data.*;
import static play.data.Form.*;
import views.html.*;

public class Application extends Controller {

    public static Result index() {
        String title = "Sample Page";
        String msg = "フォームを入力";
        Form<SampleData> dataform = form(SampleData.class);
        List<SampleData> datas = SampleData.find.all();
        return ok(index.render(title, msg, datas, dataform));
    }
    
    public static Result sendform() {
        Form<SampleData> dataform = form(SampleData.class).
            bindFromRequest();
        if (!dataform.hasErrors()) {
            dataform.get().save();
            flash();
        }
        return redirect(routes.Application.index());        
    }
}


※index.scala.html

@(title: String, message: String, datas: List[SampleData], sampleform: Form[SampleData]) 
@import helper._ 

@main(title) {

    <h1>@title</h1>
    <p>@message</p>
    @form(action = routes.Application.sendform, args = 'id -> "SampleData") {
    
        @inputText( 
            field = sampleform("name"), 
            args = '_label -> "名前", 
            'placeholder -> "名前を入力" ) 
        @inputText( 
            field = sampleform("title"), 
            args = '_label -> "題名", 
            'placeholder -> "タイトル" ) 
        @inputText( 
            field = sampleform("memo"), 
            args = '_label -> "メモ", 
            'placeholder -> "いろいろ書く。" )
        
        <input type="submit">
    
    }

    <hr>
    
    <table>
    @for(data <- datas) {
        <tr>
            <td>@data.id</td>
            <td>@data.name</td>
            <td>@data.title</td>
            <td>@data.memo</td>
        </tr>
    }
    </table>

}

※関連コンテンツ

「初心者のためのPlay Framework入門」に戻る