【问题标题】:play framework get parameter in url with dash用破折号播放框架在url中获取参数
【发布时间】:2014-07-16 23:59:52
【问题描述】:
在url中的参数是这样的:
email=TTT&first-name=XXX&last-name=YYY
那么如何从 url 中获取参数值呢?
我知道我是否使用该功能
def widget(email: String) = Action{ request =>
我要显示所有参数。
我可以收到电子邮件。但我不能将该值命名为last-name,因为破折号不能位于变量名称中。那么我怎么能像这样获得姓氏的值呢? (假设我无法更改链接,因为我从其他 url 获取了链接)
【问题讨论】:
标签:
scala
url
playframework
playframework-2.0
【解决方案1】:
如果您知道所有参数,则可以创建表单映射并使用 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 参数映射到您想要的任何类型。字符串只是一个例子。