播放框架2中表单映射的相关验证

时间:2014-03-27 21:12:37

标签: forms validation playframework-2.0

我可以为表单创建映射,其中第一个验证取决于第二个值吗?

val orderForm = Form(
    mapping(
      "requiredDelivery" -> boolean,
      "deliveryAddress" -> text,
      "comment" -> text)
    (Order.apply)(Order.unapply)
)

如果deliveryAddressnonEmptyText

,我想检查requiredDelivery true

2 个答案:

答案 0 :(得分:0)

尝试:

val orderForm = Form(
    mapping(
      "requiredDelivery" -> boolean,
      "deliveryAddress" -> text,
      "comment" -> text)
    (Order.apply)(Order.unapply) verifying("Address is required!", fields => fields match {
      case order => (order.requiredDelivery && order.deliveryAddress!="") || !order.requiredDelivery
    })
)

答案 1 :(得分:0)

映射定义进入“全局错误”后,“验证”子句导致的任何表单验证错误。表单助手不会显示这些错误,因此任何典型的模板都会显示为空白但无法成功提交表单。

修复方法是在表单模板中添加以下内容:

@if(userForm.hasGlobalErrors) {
  <ul>
  @for(error <- userForm.globalErrors) {
    <li>@error.message</li>
  }
  </ul>
}

您可以通过查看此页面并跳至“在视图模板中显示错误”部分了解更多信息 - http://www.playframework.com/documentation/2.3-SNAPSHOT/ScalaForms