模板引擎的使用
上一篇文章说的是显示一条数据,那么我们如何显示多条数据呢?
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>