【发布时间】: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<String, List<ValidationError>>传递给您的视图?除此之外,您还问了 2 个问题.. ;) -
我想您对这两个问题部分是正确的,对此感到抱歉,我将进行编辑以修复它。至于为什么我添加到闪存中是为了保持重定向范围内的错误。
标签: java html playframework playframework-2.0