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

时间:2014-07-16 23:59:53

标签: scala url playframework playframework-2.0

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

那么如何从网址获取参数值?

我知道我是否使用了这个功能

def widget(email: String) = Action{ request =>

我想显示所有参数。

我可以收到电子邮件。但是我不能将值命名为last-name,因为破折号不能是变量的名称。那我怎么能得到像这样的姓氏值? (假设我无法更改链接,因为我从其他网址获取链接)

1 个答案:

答案 0 :(得分:0)

如果您知道所有参数,则可以创建表单映射并使用fold方法获取所有值。它也适用于GET方法。在这种情况下,它看起来像这样

使用表单映射保存url params的案例类:

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 params映射到您想要的任何类型。字符串只是一个例子。