【问题标题】:Display All Validation Errors Using flash()使用 flash() 显示所有验证错误
【发布时间】:2012-07-02 16:08:40
【问题描述】:

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

我目前正在做什么来显示所有错误,我的控制器中有一个方法可以添加从 form.errors() 检索到的 Map 中包含的所有错误,然后将它们添加到 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 错误不存在则自定义验证错误?

【问题讨论】:

  • 为什么要将错误添加到闪存中?为什么不直接将Map&lt;String, List&lt;ValidationError&gt;&gt; 传递给您的视图?除此之外,您还问了 2 个问题.. ;)
  • 我想您对这两个问题部分是正确的,对此感到抱歉,我将进行编辑以修复它。至于为什么我添加到闪存中是为了保持重定向范围内的错误。

标签: java html playframework playframework-2.0


【解决方案1】:

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

【讨论】:

  • 可能是对答案的最新接受,但谢谢你。刚刚重新审视了这个问题并回忆起我曾对此发布过一个问题,这似乎仍然是最好的解决方案。
猜你喜欢
  • 2018-02-20
  • 2017-10-23
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 2018-02-26
  • 2013-02-17
  • 2018-03-14
  • 2018-08-26
相关资源
最近更新 更多