像这样的东西应该有效:
GET /foo controllers.MyController.foo(name: String ?= "", age: Int ?= 0)
由于您的参数可以省略,因此您需要为它们提供默认值(并在控制器函数中处理这些值)。
如果您传入隐式请求并访问 getQueryString 参数(我认为是在 Play 2.1.0 中添加的),您应该能够访问控制器中的其他可选参数:
def foo(name: String, age: Integer) = Action { implicit request =>
val authCode: Option[String] = request.getQueryString("authCode")
...
}
更好的方法可能只是从控制器参数中取出可选的名称和年龄,并从查询字符串中提取所有内容:
def foo = Action { implicit request =>
val nameOpt: Option[String] = request.getQueryString("name")
val ageOpt: Option[String] = request.getQueryString("age")
...
}
Update: The 当前文档对于 2.1.1 来说,这有点偏离(因为问题#776已修复),但这是另一个(也是最好的,恕我直言)选项:
GET /foo controllers.MyController.foo(name: Option[String], age: Option[Int])
And...
def foo(name: Option[String], age: Option[Int]) = Action { implicit request =>
Ok(s"Name is: $name, age is $age")
}