play framework2開發(三)

模板引擎的使用

上一篇文章說的是顯示一條數據,那麼我們如何顯示多條數據呢?

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>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章