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。尝试将其更改为地图。