Scala Play Forms 验证一个日期一个接一个地出现
Scala Play Forms verify that one date occurs after another
我的表单有两个日期,但我想验证第二个日期是否出现在第一个日期之后。有没有一种简洁的方法可以使用 Play 的表单验证来做到这一点?
这是我正在使用的表格:
val policyForm: Form[PolicyForm] = Form(mapping(
"amount" -> of[Double].verifying("You need to enter in the amount of bitcoins", _ > 0),
"beginDate" -> date("yyyy-MM-dd").verifying("You cannot have a start date before today", dayLater _ ),
"endDate" -> date("yyyy-MM-dd").verifying("End date has be after the start date", { d =>
???
})
)(PolicyForm.apply _)(PolicyForm.unapply _))
您不能在同一个 mapping
中引用其他表单域,直到它们都成功地单独绑定。即必须在外mapping
.
上做约束
val policyForm: Form[PolicyForm] = Form {
mapping(
"amount" -> of[Double].verifying(...),
"beginDate" -> date("yyyy-MM-dd").verifying(...),
"endDate" -> date("yyyy-MM-dd")
)(PolicyForm.apply _)(PolicyForm.unapply _).verifying("End date has be after the start date", policyForm =>
policyForm.beginDate.before(policyForm.endDate)
)
}
这是假设 java.util.Date
,所以如果您使用的是 joda time 或其他东西,请替换为您自己的逻辑。
我的表单有两个日期,但我想验证第二个日期是否出现在第一个日期之后。有没有一种简洁的方法可以使用 Play 的表单验证来做到这一点?
这是我正在使用的表格:
val policyForm: Form[PolicyForm] = Form(mapping(
"amount" -> of[Double].verifying("You need to enter in the amount of bitcoins", _ > 0),
"beginDate" -> date("yyyy-MM-dd").verifying("You cannot have a start date before today", dayLater _ ),
"endDate" -> date("yyyy-MM-dd").verifying("End date has be after the start date", { d =>
???
})
)(PolicyForm.apply _)(PolicyForm.unapply _))
您不能在同一个 mapping
中引用其他表单域,直到它们都成功地单独绑定。即必须在外mapping
.
val policyForm: Form[PolicyForm] = Form {
mapping(
"amount" -> of[Double].verifying(...),
"beginDate" -> date("yyyy-MM-dd").verifying(...),
"endDate" -> date("yyyy-MM-dd")
)(PolicyForm.apply _)(PolicyForm.unapply _).verifying("End date has be after the start date", policyForm =>
policyForm.beginDate.before(policyForm.endDate)
)
}
这是假设 java.util.Date
,所以如果您使用的是 joda time 或其他东西,请替换为您自己的逻辑。