![Lv.12 テンプレートエンジンの文法早見表! [play framework2.0] [java]](https://soylatte.jp/wp-content/themes/soy-magazine/assets/images/no-thumbnail.png)
テンプレートエンジンはscalaっぽいけど大丈夫だよ、と公式には書いてある。
けど、複雑なことをするとscalaの知識がないと分からない。
自分では複雑な事書かなくても、一緒に実装している人が書いていたら、やはり理解
するために多少のscala知識が必要になりそうです。
でも8割はJavaの知識だけでも大丈夫そうです!ほっ。
テンプレートエンジンの文法早見表
横幅大きめのテーブルでお届けします。
@のシンタックス | ||
---|---|---|
記述ルール | 説明 | 例 |
@() | 1行の動的コードが書ける |
[scala toolbar=”false”]Hello @(customer.getFirstName() +
customer.getLastName())![/scala] |
@{} | 2行以上の動的コードが書ける |
[scala toolbar=”false”]Hello @{val name = customer.getFirstName() +
customer.getLastName(); name}![/scala] |
@@ | アットマークをエスケープできる |
[scala toolbar=”false”]My email is soylatte@@example.com[/scala]
|
@* *@ | コメント。コメントならテンプレート引数より上段に記載してもOK |
[scala toolbar=”false”]@*********************
* This is a comment * *********************@ [/scala] |
テンプレートパラメーター(引数。最初に宣言しないとダメ。) | ||
記述ルール | 説明 | 例 |
@(名1:値1 [,名2:値2…]) | 1つ以上の変数を定義できる |
[scala toolbar=”false”]@(customer: models.Customer,
orders: List[models.Order])[/scala] |
@(名:型 = 初期値) | 初期値をセットできる |
[scala toolbar=”false”]@(title: String = “Home”)[/scala]
|
@(名1:値1)(名2:値2) | 複数のグループを宣言できる |
[scala toolbar=”false”]@(title:String)(body: Html)[/scala]
|
各ロジック | ||
記述ルール | 説明 | 例 |
@import パス | インポートできる。テンプレート引数の下に記載する |
[scala toolbar=”false”]@**テンプレート引数**@
@(customer: models.Customer, orders: List[models.Order]) @**インポート**@ @import utils._[/scala] |
@for(リストの子 <- リスト){ @リストの子 } | ループ |
[scala toolbar=”false”]
} [/scala] |
@if(式){…}else{…} | 条件分岐 |
[scala toolbar=”false”]@if(items.isEmpty()) {
Nothing to display} else { @items.size() items!}[/scala] |
@関数名(引数名:値) = {処理} | 再利用可能なコードブロック。 あんまりテンプレートで複雑なことをしないほうがいいっぽい。JavaでHtmlを加工したほうがマシな場合もある、とのこと。 |
[scala toolbar=”false”]@**宣言**@
@display(product: models.Product) = { @product.getName() ($@product.getPrice()) } @**使い方**@
[/scala] |
@関数名(引数名:型) = {処理} | 再利用可能なコードブロックその2。同上の注意。 |
[scala toolbar=”false”]@**宣言**@
@title(text: String) = @{ text.split(‘ ‘).map(_.capitalize).mkString(” “) } @**使い方**@ @title(“hello world”)[/scala] |
@implicitから始まる再利用可能なコードブロック | 暗黙変換できる。 scalaの暗黙変換について説明してくれているブログ。etc9さん。 |
[scala toolbar=”false”]@implicitFieldConstructor
= @{ MyFieldConstructor() }[/scala] |
@defining(処理){キー⇒値} | 局所変数(ローカル変数)を扱う。 |
[scala toolbar=”false”]@defining(user.getFirstName() +
” ” + user.getLastName()) { fullName => Hello @fullName
}[/scala] |
@コンテントタイプ(引数) | エスケープしない処理。「<」とかはエスケープされているので、予期した通りに表示されないこともある。 そういう場合は、コンテントタイプ(HtmlとかXml)で囲んであげる。 |
[scala toolbar=”false”]
@Html(article.content) [/scala] |
アセスメント
- @{}で実現できることが分かる
- インポートを記載する場所が分かる
- ループの記載方法が分かる
- 条件分岐の記載方法が分かる
- 再利用可能なコードブロックの記載方法が分かる
公式ドキュメントは、template engineです。