如何指定一个参数是可选的

How to specify that a parameter is optional

我是 Twirl 的新手,我正在尝试创建一个带有游戏的 TODO 应用程序,我现在的方式是,我正在尝试发送两个对象(一个 ArrayList 和一个 String).我在 try catch 中将一些代码包装在控制器中。如果捕获到异常,模板应该使用 String,而不是 ArrayList 呈现,如果没有捕获到异常,它将 return 和 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>

您可以使用 Options:

@(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))