日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jsr-303 参数校验—自定义校验注解

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsr-303 参数校验—自定义校验注解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、為什么要自定義?

通過上篇學習,了解到很多常用注解了,但是呢,總是有那么些需求....

2、案例分析(手機號格式)

2.1、需要驗證的實體 Bean

public class LoginVo {@NotNull@IsMobile //自定義的注解private String mobile;@NotNull@Length(min=32)private String password;//省略 get set 方法 }

2.2、自定義 IsMobile? 注解類

import static java.lang.annotation.ElementType.ANNOTATION_TYPE; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import javax.validation.Constraint; import javax.validation.Payload;@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) @Documented @Constraint(validatedBy = {IsMobileValidator.class }) public @interface IsMobile {//允許為空的屬性boolean required() default true;//如果校驗不通過返回的提示信息String message() default "手機號碼格式錯誤";Class<?>[] groups() default { };Class<? extends Payload>[] payload() default { }; }

?

2.3、校驗器

import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import org.apache.commons.lang3.StringUtils; import com.imooc.miaosha.util.ValidatorUtil;//IsMobile:自定義的注解 //String:注解參數類型 public class IsMobileValidator implements ConstraintValidator<IsMobile, String> {//默認值_false,用于接收注解上自定義的 requiredprivate boolean required = false;//1、初始化方法:通過該方法我們可以拿到我們的注解public void initialize(IsMobile constraintAnnotation) {//constraintAnnotation.required() 接收我們自定義的屬性,是否為空required = constraintAnnotation.required();}//2、邏輯處理public boolean isValid(String value, ConstraintValidatorContext context) {//2.1、如果允許為空的話,直接返回結果if(required) {return ValidatorUtil.isMobile(value);}else {//2.2、不允許為空//2.2.1、驗證是否為空if(StringUtils.isEmpty(value)) {return true;}else {return ValidatorUtil.isMobile(value);}}}}

?

3、總結

自定義注解需要去手動實現兩個文件:自定義注解類 + 注解校驗器類自定義注解類:message() + groups() + payload() 必須;注解校驗器類:繼承 ConstraintValidator 類<注解類,注解參數類型> + 兩個方法(initialize:初始化操作、isValid:邏輯處理)

?

總結

以上是生活随笔為你收集整理的jsr-303 参数校验—自定义校验注解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。