小编nat*_*usa的帖子

如何在播放框架表单中定义默认值可选字段?

我正在使用scala 2.0.2 play框架实现web api.我想提取并验证一些get参数.为此,我使用了一个游戏"形式",它允许我定义可选字段.

问题:对于那些可选字段,如果未传递参数,我需要定义默认值.该代码旨在正确解析这三个用例:

  • / test?top = abc(错误,abc不是整数)
  • / test?top = 123(有效,顶部是123)
  • / test(有效,top是42(默认值))

我想出了以下代码:

def test = Action {
  implicit request =>

  case class CData(top:Int)

  val p = Form(
    mapping(
      "top" -> optional(number)
    )((top) => CData($top.getOrElse(42))) ((cdata:CData) => Some(Some(cdata.top)))
  ).bindFromRequest()

  Ok("all done.")
}
Run Code Online (Sandbox Code Playgroud)

代码有效,但绝对不优雅.为了设置缺少的请求参数的默认值,有很多锅炉板正在进行.

谁能建议一个更清洁,更巧合的解决方案?

scala playframework playframework-2.0

6
推荐指数
2
解决办法
5900
查看次数

标签 统计

playframework ×1

playframework-2.0 ×1

scala ×1