2015-04-12 76 views
0

我是新來的Twirl,並試圖創建一個TODO應用程序,我現在擁有它的方式,我試圖發送兩個對象(一個ArrayList和一個String )。我在try catch中包裝了一些代碼。如果發現異常,則應使用String而不是ArrayList呈現模板,如果沒有發現異常,則將返回ArrayList,但不返回String。我試過只是通過一個null,但我覺得有一個更好的方法來做到這一點。在那兒?這裏是我的捻:如何指定參數是可選的

@(message: String, tasks: ArrayList[Task]) 

<!DOCTYPE html> 
<html> 
<head> 
<title>TODO</title> 
</head> 
<body> 
    <h1>TODOs</h1> 
    <p>@message</p> 
    @for(task <- tasks) { 
    <li><@task.task</li> } 
</body> 
</html> 

回答

1

你可以使用Option S:

@(maybeMessage: Option[String], maybeTasks: Option[Seq[Task]]) 

<!DOCTYPE html> 
<html> 
<head> 
    <title>TODO</title> 
</head> 
<body> 
    <h1>TODOs</h1> 
    @for(message <- maybeMessage) { 
     <p>@message</p> 
    } 
    @for(tasks <- maybeTasks) { 
     @for(task <- tasks) { 
      <li>@task.task</li> 
     } 
    } 
</body> 
</html> 

,然後從控制器:

Ok(views.html.foo(None, Some(Seq(Task("task 1"), Task("task 2"))))) 

Ok(views.html.foo(Some("Something went wrong."), None))