使用flash()显示所有验证错误

时间:2012-07-02 16:08:41

标签: java html playframework playframework-2.0

我正在使用Java Play 2.0.1同时使用自定义验证和play.data.validation.constraints,我正在寻找一种方法来显示表单中出现的每个错误,无论我的代码是验证还是Play是

我目前正在做什么来显示所有错误,我在Controller中有一个方法来添加从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错误是显示,然后如果没有播放检查,以查看表格包含的类中是否包含公共String validate()

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

1 个答案:

答案 0 :(得分:0)

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