好吧,我在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
isEmpty
或isCorrectLength
,并且逻辑表明我们应该仅在字段不是isCorrectLength
时检查空。但还有其他条件,我需要两个或更多fooField.verifying()
我在这里提出了一个简单的问题示例。
答案 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
}
}