1

我是 Twirl 的新手,我正在尝试创建一个带有播放功能的 TODO 应用程序,就像我现在拥有的那样,我正在尝试发送两个对象(anArrayList和 a String)。我已经将一些代码包装在控制器中的 try catch 中。如果捕获到异常,则应使用 a 呈现模板String,而不是ArrayList,如果未捕获到异常,它将返回 an ArrayList,而不是 a String。我试过只通过一个 as 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>
4

1 回答 1

2

你可以使用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))
于 2015-12-23T03:07:10.790 回答