[play2] template 예시

scala 2017. 11. 23. 16:59


play2의 template(twirl template engine)을 사용하는 예제는 다음 링크에 있지만.. 조금 잘 눈에 안 들어온다.


https://www.playframework.com/documentation/2.6.x/ScalaTemplates




코드로 간단히 표현하면 다음과 같다. 


Controller는 다음과 같다. 

def index= Action { implicit request =>
val seq = Seq("Samuel", "Hardy", "Dennis", "Issac")
Ok(views.html.update(new java.util.Date, seq)) }


update.scala.html은 다음 과 같다. (template paramter, template content로 나뉘어져 있다)

@(date: java.util.Date, seq: Seq[String])

<html>
<body>
<h1>Today : @date.toString!</h1>
<ul>
<li><code>List</code>: @List(1,2,3)</li>
<li><code>Seq</code>: @Seq("a", "b", "c")</li>
<li><code>Some</code>: @Some("foo")</li>
<li><code>None</code>: @None</li>
<li><code>Left</code>: @Left("foo")</li>
<li><code>Right</code>: @Right("bar")</li>
</ul>
<ul>
@seq.map { order =>
<li>@order.toLowerCase</li>
}
</ul>
</body>
</html>


결과는 깔끔하게 잘 나온다. 



Today : Thu Nov 23 19:52:04 KST 2017!

  • List: 123
  • Seq: abc
  • Some: foo
  • None:
  • Left: Left(foo)
  • Right: Right(bar)
  • samuel
  • hardy
  • dennis
  • issac






이번엔 주석과 @display 이다. 이것은 현재 template안에서 어떻게 표현하고 싶은지 보여줄 기능이라 하겠다.


@**************************
* import *
***************************@
@display(date: java.util.Date) = {
@date.toString (@date.hashCode())
}
<ul>
<li>@display(date)</li>
</ul>


결과는 다음과 같다.


  • Thu Nov 23 19:15:33 KST 2017 (-403555210)



변수의 값이 정의되어 있다면 다음을 출력한다.
@defining(seq) { name =>
<ul><li>Hello @name </li></ul>
}

결과는 다음과 같다.
  • Hello SamuelHardyDennisIssac



일반 변수를 정의하는 방식은 다음과 같다.
@name = {samuel}
@name

@{val name = "samuel"; name}


결과는 다음과 같다.


samuel






Posted by '김용환'
,