春季启动中的数字验证

时间:2019-07-02 12:33:43

标签: spring-boot

我已经在模型中声明了一个10位数手机号码的注释,但是它仍然接受超过10位数的手机

    public IActionResult OnPost()
    {

        if (LoginCheck())
        {
            Message = "success";
            //Login was a success. Go to the next page
            return Redirect("/FileIwantTo");
        }
        else
        {
            Message = "failure";
            //Login was a failure. Noting happens. exept the message
            return Redirect("/FileI´mStaying");
        }

    }

当我们输入任何手机号码时,仅接受10位数字的手机号码

4 个答案:

答案 0 :(得分:1)

使用@Size定义输入的长度。

使用@Min有所不同。

也使用@NotBlank代替@NotNull@NotBlank会检查

  • 字符串不为空
  • 修剪后的长度大于零

答案 1 :(得分:1)

如果您正在使用休眠模式,则可以使用:

@Length(max = 10)

将max的长度限制为10。此@Length是休眠特定的。 您还可以使用:

@Size(min = 10, max = 10)

设置条件以根据您的要求验证最小和最大长度。

答案 2 :(得分:0)

对于手机号码验证,我建议编写您的自定义验证器注释。由于手机号码可以有不同的有效模式。 首先,您定义一个注释类型:

@Target({ElementType.FIELD , ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PhoneNumberValidator.class)

public @interface PhoneNumberValidationAnnotationName {
     String message() default "Message to returned on validation failure";

      Class<?>[] groups() default {} ;

      Class<? extends Payload>[] payload() default {} ;
}

之后,您在单独的类中定义验证逻辑:

public class PhoneNumberValidator implements 
      ConstraintValidator<PhoneNumberValidationAnnotationName, String> {

//Here you define your phone number valid pattern
//you can put country code, number length, any specific pattern
private final String PATTERN = "(country-code)[0-9]{8}" ;

@Override
public boolean isValid(String phone, ConstraintValidatorContext context) {
    
    if(Pattern.matches(FIRST_PATTERN , phone)) {
        return true ;
    }

    return false ;
    
    }   
}

有关详细信息,click here

答案 3 :(得分:0)

下面的代码对你有用

@NotBlank(message = "mobileNumber is required")
@Size(min = 10, max = 10)
public String mobileNumber;