コントローラ層では、まず、自分自身と対応する入力パラメータで定義されたクラスに行って、データを検証し、対応するパラメータの要件を確認し、する@Validアノテーションを使用して
、コントローラにそれを受け入れます。
@PostMapping(value = "/login_submit")
public ResponseResult<Boolean> login_submit(@Valid LoginVo loginVo) {
userService.checkLogin(loginVo);
return ResponseResult.success(true);
}
検証のために、着信パラメーターの対応するクラスのLoginVoを入力します。
パラメーター検証の依存関係が必要です。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
import com.example.validator.IsPhone;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
@Data
public class LoginVo {
@NotEmpty(message = "手机号不能为空!")//该注解只能验证String
@IsPhone//check phone
private String phone;
@NotEmpty(message = "密码不能为空!")
private String password;
}
バリデーターは、検証を空にすることはできない、メールボックスなど、いくつかの注釈検証を提供します。
ここで、@ IsPhoneは携帯電話番号の自己定義の注釈検証です。
最初に、このインターフェースに対応するクラスを記述し、次にこのインターフェースに対応するクラスを記述する必要があります。特定の関数を実装するために記述します。バリデータークラス。ここでの特定の検証ルールは、個別のバリデータールールクラスにすることができます。
1.カスタムインターフェイス
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
@Target({
ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(
validatedBy = {
IsPhoneValidator.class}
)
public @interface IsPhone {
boolean required() default false;
String message() default "手机号格式错误,请重新输入!";
Class<?>[] groups() default {
};
Class<? extends Payload>[] payload() default {
};
}
2.特定のバリデーター実装クラス
import com.example.util.ValidatorUtil;
import org.apache.commons.lang3.StringUtils;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class IsPhoneValidator implements ConstraintValidator<IsPhone,String> {
private boolean required = false;
public void initialize(IsPhone constraintAnnotation) {
required = constraintAnnotation.required();
}
public boolean isValid(String value, ConstraintValidatorContext var2){
if(required){
return ValidatorUtil.isPhone(value);
}else {
if(StringUtils.isEmpty(value)){
return true;
}else {
return ValidatorUtil.isPhone(value);
}
}
}
}
3.検証ルールutilクラス
import org.apache.commons.lang3.StringUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ValidatorUtil {
private static final Pattern phone_patten = Pattern.compile("^[1][3,4,5,7,8][0-9]{9}$");
public static boolean isPhone(String str){
if(StringUtils.isEmpty(str)){
return false;
}
Matcher m = phone_patten.matcher(str);
return m.matches();
}
}