Scala 使用破折号播放url中的框架获取参数

Scala 使用破折号播放url中的框架获取参数,scala,url,playframework,playframework-2.0,Scala,Url,Playframework,Playframework 2.0,在url中,参数如下所示: email=TTT&first name=XXX&last name=YYY 那么如何从url中获取参数值呢 我知道我是否使用了这个函数 def widget(email: String) = Action{ request => 我想显示所有的参数 我可以收到电子邮件。但我无法将该值命名为姓氏,因为破折号不能位于变量名称中。那么我怎样才能得到像这样的lastname的值呢?假设我无法更改链接,因为我从其他url获取了链接,如果您知道所有参数,则可以创建表单映

在url中,参数如下所示: email=TTT&first name=XXX&last name=YYY

那么如何从url中获取参数值呢

我知道我是否使用了这个函数

def widget(email: String) = Action{ request =>
我想显示所有的参数


我可以收到电子邮件。但我无法将该值命名为姓氏,因为破折号不能位于变量名称中。那么我怎样才能得到像这样的lastname的值呢?假设我无法更改链接,因为我从其他url获取了链接

,如果您知道所有参数,则可以创建表单映射并使用fold方法获取所有值。它还与GET方法一起工作。在这种情况下,它看起来是这样的

用于保存具有表单映射的url参数的案例类:

import play.api.data.Form
import play.api.data.Forms._

case class UrlForm(email: String, firstName: String, lastName: String)

object UrlForm {
  val form = Form[UrlForm](
    mapping(
      "email" -> text,
      "first-name" -> text,
      "last-name" -> text
    )(UrlForm.apply)(UrlForm.unapply)
  )
}
此表单的控制器:

object UrlController {
  def widget() = Action { implicit request =>
      UrlForm.form.bindFromRequest.fold(
        formWithErrors => // validation errors
        urlForm => urlForm.email; urlForm.lastName //etc.
      )
  }
}
请注意,您可以将url参数映射到所需的任何类型。字符串只是一个例子