如何指定参数是可选的

时间:2015-04-12 22:58:05

标签: twirl

我是Twirl的新手,我正在尝试使用Play创建TODO应用程序,就像我现在拥有它一样,我正在尝试发送两个对象(ArrayListString )。我在try catch中将一些代码包装在控制器中。如果捕获到异常,则应使用String而不是ArrayList呈现模板,如果没有捕获到异常,则返回ArrayList,但不返回{{1 }}。我试过将{1}作为String,但我觉得有更好的方法。在那儿?这是我的Twirl:

null

1 个答案:

答案 0 :(得分: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))