我正在使用 scala 2.0.2 播放框架实现一个 web api。我想提取并验证一些获取参数。为此,我使用了一个允许我定义可选字段的播放“表单”。
问题:对于那些可选字段,如果不传递参数,我需要定义一个默认值。该代码旨在正确解析这三个用例:
- /test?top=abc(错误,abc 不是整数)
- /test?top=123(有效,top 为 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.")
}
代码有效,但绝对不优雅。有很多样板只是为了为缺少的请求参数设置默认值。
任何人都可以提出一个更清洁、更简洁的解决方案吗?