在scala表单上只显示一条错误消息

时间:2014-07-16 05:36:57

标签: forms scala playframework playframework-2.2

好吧,我在scala表单中显示错误有一个小问题,

在我的单个字段的scala表单上,我做了两次检查,例如:

    val startForm = Form(
        single(
          "fooField" -> text.verifying(LengthError, { Util.isLengthCorrect(_) }).verifying(EmptyError, { !_.isEmpty }),
))

因此,当表单中显示的错误消息时,如果两个检查条件都没有填满,则只显示一个错误消息,只显示一个错误消息。

我只能手动显示第一个错误,如下所示:

@for(error <- startForm.errors("fooField")) {
                            <dd class="error">@Messages(error.message,0)</dd>
                            }

但由于我使用表单助手,表单助手本身会显示错误信息。那么可以做些什么来解决这个问题。

@Update:当然,我在这里检查过fooField isEmptyisCorrectLength,并且逻辑表明我们应该仅在字段不是isCorrectLength时检查空。但还有其他条件,我需要两个或更多fooField.verifying()我在这里提出了一个简单的问题示例。

1 个答案:

答案 0 :(得分:0)

你必须创建自己的方法来编写两个Constraint [T],它只会在第一个传递时评估第二个。像这样:

def oneAtATime[T](first: Constraint[T], second: Constraint[T]) =
  new Constraint[T](None, Seq()) { t: T =>
    first(t) match {
      case Valid => second(t)
      case other => other
    }
  }