【问题标题】:How to validate all input fields, select options at a time on a form如何验证所有输入字段,在表单上一次选择选项
【发布时间】:2022-01-08 06:00:22
【问题描述】:

使用下面的 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;
                }
                
            }

【问题讨论】:

  • 如果你不希望你的方法在添加错误后返回,那么你不应该在添加错误后有return;语句

标签: java validation


【解决方案1】:

删除 if 语句中的 return 并且仅在测试所有用例后返回。

Errors 对象存储特定对象的BindingErrorsValidation 错误,因此理想情况下,您应该在返回之前将所有验证错误推送到错误对象。

【讨论】:

  • 它有效。但是,问题是,对于一个输入字段,它一次返回用户名是必需的和无效的用户名
  • 你应该重新安排你的用户名验证,首先检查用户名是否不为空,然后在嵌套中检查长度并且只有当长度正确时才进行正则表达式验证
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 2020-08-11
  • 1970-01-01
  • 2013-11-10
  • 2012-05-23
相关资源
最近更新 更多