我正在使用scala 2.0.2 play框架实现web api。我想提取和验证许多get参数。为此,我使用play "form"来定义可选字段。
问题: 对于那些可选字段,如果未传递参数,我需要定义一个默认值。 代码旨在正确解析以下三种用例:
/test?top=abc(错误,abc不是整数) /test?top=123(有效,top是123) /test(有效,top是42(默认值))
我想到了以下代码:
问题: 对于那些可选字段,如果未传递参数,我需要定义一个默认值。 代码旨在正确解析以下三种用例:
/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.")
}
这段代码可以运行,但是显然不够优雅。为了设置缺失请求参数的默认值,需要写很多样板代码。
有没有更简洁、更清晰的解决方案?