フレームワーク2の開発を再生する(3)

テンプレートエンジンの使用

前回の記事では、1つのデータを表示する方法について説明しましたが、複数のデータを表示するにはどうすればよいでしょうか。

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>

パラメータリストを追加し、

 @for(u <-users){    <li> ID:@ u.id Name:@ u.name </ li>    }

ループ表示ですか

2.UserControlの送信メソッドを変更します

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で使用されている場合は、mark @@ 163.comのように2つの@@を使用する必要があります。


テンプレートパラメータ

テンプレートは関数に似ているため、パラメーターが必要です。パラメーターは、テンプレートファイルの先頭で宣言する必要があります。

@(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は中括弧内でのみ使用できます

インポートステートメント

テンプレートの上部に任意のパッケージを導入できます

@(user:forms.User,users:List[forms.User])
@import java.util._

複数のページで同じパッケージをインポートする必要がある場合、または会社に通信パッケージがある場合

project/Build.scala

val main = play.Project(appName, appVersion, appDependencies).settings(
    templatesImport += "java.util._" 
  )

htmlを出力したい場合は ネイティブHTML

<p>
  @Html(article.content)    
</p>



おすすめ

転載: blog.csdn.net/penkee/article/details/8747340