【发布时间】:2015-04-29 20:48:35
【问题描述】:
使用 Play Framework 2.3.x,我发现使用 play.data.validation package 中的注解和使用 validate() 函数编写的自定义代码之间存在差异。
例如,假设我有 Circle.java
public class Circle extends Model {
@Constraints.Required
public String name;
public Double radius;
public List<ValidationError> validate() {
List<ValidationError> errors = new ArrayList<ValidationError>();
if(radius == null || radius < 0) {
errors.add(new ValidationError("radius", "Invalid radius"));
}
return errors.isEmpty() ? null : errors;
}
// other stuff...
}
假设我有一个表单,在我的控制器中我使用bindFromRequest() 方法。如果我在表单中将两个条目都留空,那么我会在名称字段上收到一个闪烁错误,默认消息为error.required,但在空半径字段上没有闪烁警告。然后,如果我填写名称字段并尝试再次提交表单,现在它会在半径字段上显示 Flash 错误消息“无效半径”。
我不希望用户必须多次提交表单才能显示不同的验证消息。为什么 play 不同时执行所有验证检查?是否可以通过这种方式检查验证?
【问题讨论】:
标签: java forms validation playframework playframework-2.3