模板引擎的使用
上一篇文章說的是顯示一條資料,那麼我們如何顯示多條資料呢?
1、修改result.scala.html
@(user:forms.User,users:List[forms.User])<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><h1>Result</h1>ID:@user.id<br/>Name:@user.name<ul> @for(u<-users){ <li>ID:@u.id Name:@u.name</li> }</ul></body></html>
增加一個參數List,
@for(u<-users){
<li>ID:@u.id Name:@u.name</li>
}
就是迴圈顯示
2、修改UserControl的submit方法
public static Result submit() { User user = userForm.bindFromRequest().get(); List<User> list=new ArrayList(); list.add(user); list.add(user); list.add(user); return ok(views.html.user.result.render(user,list)); }
此處是類比資料,並無實際意義。
如果html中用到@符號,則需要使用2個@@,比如mark@@163.com
模板參數
模板就像一個函數,所以它需要參數,必須聲明在模板檔案的頂端
@(customer: models.Customer, orders: List[models.Order])
你也可以設定預設參數值
@(title: String = "Home")
或者幾個參數組
@(title:String)(body: Html)
if-語句塊
沒有什麼特別的
@if(items.isEmpty()) { <h1>Nothing to display</h1>} else { <h1>@items.size() items!</h1>}
定義局部變數
@defining(user.id + " " + user.name) { info => <div>Hello @info</div>}
@info只能在該大括弧內使用
Import語句
你可以在模板的頂端引入任何包
@(user:forms.User,users:List[forms.User])@import java.util._
如果多個頁面都需要引入相同包,或者公司有comm包
project/Build.scala
val main = play.Project(appName, appVersion, appDependencies).settings( templatesImport += "java.util._" )
原生HTML
如果想輸出html
<p> @Html(article.content) </p>