使用下面的java代码,在服务器端验证中,我成功地验证了输入字段和选项。。。等等,但问题是当我点击提交按钮时,会显示一条接一条的错误消息,但我想在点击提交按钮的时候一次显示所有的错误消息。有人能告诉我,为了解决我的问题,我应该在下面的代码中做哪些更改吗。
1.Code
@Component
public UserValidation implements Validator
{
// @Override
public boolean supports(Class<?> clazz) {
return User.class.isAssignableFrom(clazz);
}
// @Override
public void validate(Object target, Errors errors) {
User user = (User) target;
final String nameRegex = "[A-Za-z]+(s[A-Za-z]+)*";
final String phoneRegex = "^[6-9]\d{9}$";
if (user.getUserName().equals("")) {
errors.rejectValue("userrName", "userrName.required", "Error: User Name is required");
return;
}
if (user.getUserName().length() > 20) {
errors.rejectValue("userrName", "userrName.required", "Error: User Name reached maximum limit of characters allowed");
return;
}
if (user.getUserName().matches(nameRegex) == false) {
errors.rejectValue("userrName", "userrName.required", "Error: Invalid User Name ");
return;
}
if (user.getUserType().equals("0")) {
errors.rejectValue("userType", "userType.required", "Error: Select User Type");
return;
}
if (user.getUserNumber().equals("")) {
errors.rejectValue("userNumber", "userNumber.required", "Error: User Number is required");
return;
}
if (user.getUserNumber().matches(phoneRegex) == false) {
errors.rejectValue("userNumber", "userNumber.required", "Error: Invalid User Number ");
return;
}
}
删除if语句中的return
,只在测试完所有用例后返回。
Errors
对象存储特定对象的BindingErrors
和Validation
错误,因此理想情况下,您应该在返回之前将所有验证错误推送到错误对象。