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 或其他东西,请替换为您自己的逻辑。