如何指定一个参数是可选的
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>
您可以使用 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))
我是 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>
您可以使用 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))