Spring MVC Validation显示多条错误消息



我在Spring MVC中尝试执行验证时遇到了一些问题。这是我的验证器类:

@Component
public class LossOfCardValidator implements Validator {
public boolean supports(Class clazz) {
return SingleReplacementForm.class.equals(clazz);
}
public void validate(Object obj, Errors e) {
SingleReplacementForm p = (SingleReplacementForm) obj;
// check empty
ValidationUtils.rejectIfEmpty(e, "contactNumber", "NotNull.contactNumber");

// check integer
if (!p.getContactNumber().matches("[0-9]+")) {
e.rejectValue("contactNumber", "Format.contactNumber");
}
}

在我的控制器中,我使用以下方式调用它:

LossOfCardValidator validator = new LossOfCardValidator ();
validator.validate(singleReplacementForm, bindingResult);

它确实进行了验证。但是,如果我没有为联系人号码字段输入任何内容,则会显示两条错误消息。是否有修改它的方法,首先检查字段是否为空,如果不是,则继续检查格式,以便每次只显示一条错误消息?

谢谢!

您可以在Error error对象上使用getFieldErrorCount方法来检查contactNumber字段上是否已经存在错误。像这样:

// check integer
if (e.getFieldErrorCount("contactNumber") <= 0 && !p.getContactNumber().matches("[0-9]+")) {
e.rejectValue("contactNumber", "Format.contactNumber");
}

这是用最小的更改集进行的最简单的修复。您应该明确查看@NotNull@Pattern注释验证。

相关内容

  • 没有找到相关文章

最新更新