【发布时间】:2020-12-20 05:17:45
【问题描述】:
尝试在 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);
它确实执行了验证。但是,如果我没有在联系电话字段中输入任何内容,则会显示两条错误消息。无论如何要修改它,首先它会检查该字段是否为空,如果不是,则继续检查格式,以便每次只显示一个错误消息?
谢谢!
【问题讨论】:
-
而不是这样做 假设您正在接受请求,使用验证器注释会更容易和干净。
@NotNull(message="")或@NotBlank(message="")。您可以将@Pattern用于正则表达式。让你的请求类扩展一个验证器,然后在执行之前调用它 -
@Silverfang 但是对于这种方法有没有办法做到这一点?
标签: java validation spring-mvc