zipWithIndex在Play中没有按预期工作!框架模板

时间:2016-03-09 09:25:46

标签: scala playframework playframework-2.0

我在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>
      }
  }

现在没有显示错误消息。

我在这里缺少一些怪癖吗?

1 个答案:

答案 0 :(得分:2)

您似乎在zipWithIndex变体中使用了返回单位的foreach。尝试将其更改为地图。