我在Play中使用了客户错误助手,并且在map
上使用Seq[FormError]
时,它按预期工作但我想访问索引,所以如果有超过x错误我只能显示一定数量。
使用map
的工作代码是:
@form.errors.map { error =>
@defining(
error.args.nonEmpty match {
case true =>
if (error.key.nonEmpty) {
error.key + error.args.fold("") ( _ + "." + _ )
} else {
error.args.head.toString
}
case _ => error.key
}
) { anchor :String =>
<li class="validation-message" role="tooltip" data-journey="search-page:error:@error.key" id='@anchor.replaceAll("""[\.\[\]]""", "-")-error'>
<a href="#@anchor" class="error-list" data-focuses="@error.key">
@Messages(s"$errorMessageFieldPrefix.$anchor")
</a>
</li>
}
}
使用zipWithIndex
无效的代码是:
@form.errors.zipWithIndex.foreach { case (error, i) =>
@defining(
error.args.nonEmpty match {
case true =>
if (error.key.nonEmpty) {
error.key + error.args.fold("") ( _ + "." + _ )
} else {
error.args.head.toString
}
case _ => error.key
}
) { anchor :String =>
<li class="validation-message" role="tooltip" data-journey="search-page:error:@error.key" id='@anchor.replaceAll("""[\.\[\]]""", "-")-error'>
<a href="#@anchor" class="error-list" data-focuses="@error.key">
@Messages(s"$errorMessageFieldPrefix.$anchor")
</a>
</li>
}
}
现在没有显示错误消息。
我在这里缺少一些怪癖吗?
答案 0 :(得分:2)
您似乎在zipWithIndex变体中使用了返回单位的foreach。尝试将其更改为地图。