3

我正在使用具有自定义验证和 play.data.validation.constraints 的 Java Play 2.0.1,并且正在寻找一种方法来显示表单中发生的每个错误,无论我的代码是否正在验证或 Play 是否正在验证。

我目前正在做什么来显示所有错误,是我的控制器中有一个方法可以添加从中检索到的 Map 中包含的所有错误form.errors(),然后将它们添加到 flash 范围内,这意味着所有错误将被检测到,但不会在第一次重定向时显示,直到 play.data.validation 错误得到修复。

public static void addFlashError(Map<String, List<ValidationError>> errors){
      for(String key : errors.keySet()){
          List<ValidationError> currentError = errors.get(key);
          for(ValidationError error : currentError){
              flash(key, error.message());
          }
      }   
  }

然后在我的 scala.html 中显示错误

    <div class="alert-message error">
        @for((key, value) <- flash){
            <strong>Error : </strong> @value<br />
        }
    </div> 

但这似乎不是最简单的解决方案,并且 Play 不会在 play.data.validation 错误的同时显示自定义验证错误,因为看起来好像显示了 play.data.validation 错误,并且然后如果没有 Play 检查String validate()表单包装的类中是否包含公共内容。

是否有一种简单的方法来显示表单中的所有错误,而不是 play.data.validation 错误,如果 play.data.validation 错误不存在则自定义验证错误?

4

1 回答 1

0

我所做的是调用form.hasErrors()该值并将其存储在一个变量中。接下来,您将执行所有自定义验证。抓取form.errors()(就像您所做的那样),如果您发现任何错误,则将它们直接插入该地图。如果有任何验证错误,然后badRequest()像往常一样返回您的 Form 实例(其中包含带有所有错误的错误映射)。

于 2012-11-15T21:07:19.203 回答