2014/05/19

play framework template

・testProject/app/models/Products.java
・testProject/app/views/productList.scala.html
・testProject/app/controllers/Products.java
・マッピングファイル:
testProject/conf/routes
#products
GET /products/ controllers.Products.list()
===>MVCだね。。


・testProject/app/controllers/Products.java

import views.html.products.list;
★==>templateのViewをimporする.targetのところでコンバインしてくれた。。
testProject\target\scala-2.10\classes\views\html

public class Products extends Controller {
public static Result list() {

★==>モデルのメリットを呼び出す
Set<Product> products = Product.findAll();
return ok(list.render(products));
}
...
}

The render method on the template results in an HTML page, which we want
to return to the client in the body HTTP response. To do this, we wrap it in a
Result object, by passing it to the ok method


sessionless API.
‘refresh an entity’, or what the difference between and ‘attached’ entities and
‘detached’ entities.


・テンプレートは簡単な命名規則に従って、ただの Scala の関数としてコンパイルされます。views/Application/index.scala.html というテンプレートファイルを作成すると、コンパイルにより views.html.Application.index という関数が生成されます。

・Scala テンプレートでは @ という文字が唯一の特殊文字です。この文字はテンプレート中に登場すると Scala コードの開始として認識されます

・テンプレートはただの関数なので、引数をとります。引数はテンプレートの先頭行で宣言します。
@(customer: models.Customer, orders: Seq[models.Order])
@(title: String = "Home")
@(title:String)(body: Html)
@(title: String)(body: Html)(implicit request: RequestHeader)