zipWithIndex 在 Play 中没有按预期工作!框架模板
zipWithIndex not working as expected in Play! Framework template
我在 Play 中使用客户错误助手,在 Seq[FormError]
上使用 map
时它按预期工作,但我想访问索引,所以如果有超过 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>
}
}
现在错误消息不显示了。
我在这里遗漏的框架中有什么奇怪的地方吗?
您似乎在 zipWithIndex 变体中使用 returns 单元的 foreach。尝试将其更改为地图。
我在 Play 中使用客户错误助手,在 Seq[FormError]
上使用 map
时它按预期工作,但我想访问索引,所以如果有超过 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>
}
}
现在错误消息不显示了。
我在这里遗漏的框架中有什么奇怪的地方吗?
您似乎在 zipWithIndex 变体中使用 returns 单元的 foreach。尝试将其更改为地图。