国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java的validation框架(參數(shù)校驗(yàn))

這篇具有很好參考價(jià)值的文章主要介紹了java的validation框架(參數(shù)校驗(yàn))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一.bean validation和hibernate validator參數(shù)校驗(yàn)常用約束注解:

空值校驗(yàn)類:@Null,@NotNull,@NotEmpty,@NotBlank等
范圍校驗(yàn)類:@Min,@Size,@Digits,@Future,@Negative等
其它校驗(yàn)類:@Email,@URL,@AssertTrue,@Pattern等

二.初級(jí)約束注解:

1. @NotNull(message = “用戶id不能為空”)

  • 沒有設(shè)置值時(shí)會(huì)返回
  • 設(shè)置為userInfo.setUserId("");時(shí)不會(huì)返回
  • userInfo.setUserId(" ");時(shí)不會(huì)返回

2.@NotEmpty(message = “用戶名不能為空”)

  • 不會(huì)自動(dòng)去掉字符串前后的空格再判斷是否為空
  • 沒有設(shè)置值時(shí)會(huì)返回
  • userInfo.setUserName("");時(shí)返回
  • userInfo.setUserName(" ");時(shí)不返回

3.@NotBlank(message = “密碼不能為空”)

  • 自動(dòng)去掉字符串前后的空格再判斷是否為空
  • 沒有設(shè)置值時(shí)會(huì)返回
  • userInfo.setPassWord("");時(shí)返回
  • userInfo.setPassWord(" ");時(shí)返回

4.@Length(min = 6,max = 20,message = “密碼不能少于6位,也不能多于20位”)

  • 可以直接不設(shè)置值
  • 即數(shù)量必須在6到20之間(包含6和20)

5.@Email(message = “郵箱不正確”)

  • 可以直接不設(shè)置值
  • 必須是正確的郵箱格式

6. @Min(value = 18, message = “年齡不能小于18歲”)

  • 可以直接不設(shè)置值
  • 即年齡必須大于或者等于18歲

7. @Max(value = 60, message = “年齡不能大于60歲”)

  • 可以直接不設(shè)置值
  • 即年齡必須等于小于60歲

8.@Past(message = “生日只能是過去的時(shí)間或者現(xiàn)在的時(shí)間”)

  • 可以直接不設(shè)置值
  • 傳來的時(shí)間只能是過去的時(shí)間或者現(xiàn)在的時(shí)間,不能是未來時(shí)間

9.@Size(min = 1,message = “不能少于一個(gè)好友”)

  • 可以直接不設(shè)置值
  • 集合里面的內(nèi)容不能少于1

三.中級(jí)約束注解:

1.@Valid

  • private List<@Valid UserInfo> friends;表示對(duì)UserInfo類中里面的每個(gè)屬性進(jìn)行驗(yàn)證

2.@NotNull(message = “注冊(cè)時(shí)郵箱不能為空”,groups = RegisterGroup.class)

  • //注冊(cè)場景 public interface RegisterGroup{}
    //登錄場景 public interface LoginGroup{}
  • 注冊(cè)時(shí)郵箱不能為空,登錄時(shí)可以為空
  • set = validator.validate(userInfo,UserInfo.RegisterGroup.class);

3.//組排序場景
@GroupSequence({
LoginGroup.class,
RegisterGroup.class,
Default.class
})
public interface Group{}

  • set = validator.validate(userInfo,UserInfo.Group.class);
  • 先驗(yàn)證 LoginGroup組的,都通過才驗(yàn)證下面的,不通過直接返回驗(yàn)證錯(cuò)誤信息,驗(yàn)證順序按照上面的順序進(jìn)行驗(yàn)證

四.高級(jí)約束注解:

1.public void setUserInfo(@Valid UserInfo userInfo){ }
set1 = executableValidator.validateParameters(service,method1,paramObject);

  • @Valid對(duì)方法輸入?yún)?shù)進(jìn)行約束注解校驗(yàn)

2.public @Valid UserInfo getUserInfo(){return new UserInfo();}
set1 = executableValidator.validateReturnValue(userInfoService,method,returnValue);

  • @Valid對(duì)方法返回值進(jìn)行約束校驗(yàn)

3.public UserInfoService(@Valid UserInfo userInfo){}
set1 = executableValidator.validateConstructorParameters(constructor,paramObject);

  • @Valid對(duì)構(gòu)造函數(shù)輸入?yún)?shù)進(jìn)行校驗(yàn)

五.上面初,中,高級(jí)注解示例:

pom.xml

<!-- Validation 相關(guān)依賴 -->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.16.Final</version>
        </dependency>
        <dependency>
            <groupId>javax.el</groupId>
            <artifactId>javax.el-api</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>javax.el</artifactId>
            <version>2.2.6</version>
        </dependency>

待驗(yàn)證對(duì)象實(shí)體類UserInfo.java:

package com.mystudy.elastic.job.springboot.validation;

import org.hibernate.validator.constraints.Length;

import javax.validation.GroupSequence;
import javax.validation.Valid;
import javax.validation.constraints.*;
import javax.validation.groups.Default;
import java.util.Date;
import java.util.List;

/**
 * 待驗(yàn)證對(duì)象實(shí)體類
 * 用戶信息類
 */
public class UserInfo {

    //登錄場景
    public interface LoginGroup{}

    //注冊(cè)場景
    public interface RegisterGroup{}

    //組排序場景
    @GroupSequence({
            LoginGroup.class,
            RegisterGroup.class,
            Default.class
    })
    public interface Group{}

    /**
     * 用戶id
     */
    @NotNull(message = "用戶id不能為空")
    private String userId;

    /**
     * 用戶名
     */
    @NotEmpty(message = "用戶名不能為空")
    private String userName;

    /**
     * 密碼
     */
    @NotBlank(message = "密碼不能為空")
    @Length(min = 6, max = 20, message = "密碼不能少于6位,也不能多于20位")
    private String passWord;

    /**
     * 郵箱
     */
//    @NotNull(message = "注冊(cè)時(shí)郵箱不能為空",groups = RegisterGroup.class)
    @Email(message = "郵箱不正確")
    private String email;

    /**
     * 年齡
     */
    @Min(value = 18, message = "年齡不能小于18歲")
    @Max(value = 60, message = "年齡不能大于60歲")
    private Integer age;

    /**
     * 手機(jī)號(hào)
     */
    @Phone(message = "手機(jī)號(hào)不是158后面隨便的手機(jī)號(hào)")
    private String phone;

    /**
     * 生日
     */
    @Past(message = "生日只能是過去的時(shí)間或者現(xiàn)在的時(shí)間")
    private Date birthday;

    /**
     * 好友列表
     */
    @Size(min = 1,message = "不能少于一個(gè)好友")
    private List<@Valid UserInfo> friends;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public List<UserInfo> getFriends() {
        return friends;
    }

    public void setFriends(List<UserInfo> friends) {
        this.friends = friends;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

用戶信息服務(wù)類UserInfoService.java:

package com.mystudy.elastic.job.springboot.validation;

import javax.validation.Valid;

/**
 * 用戶信息服務(wù)類
 */
public class UserInfoService {
    /**
     *  userInfo作為輸入?yún)?shù)
     * @param userInfo
     */
    public void setUserInfo(@Valid UserInfo userInfo){

    }

    /**
     * userInfo作為輸出參數(shù)
     * @return
     */
    public @Valid UserInfo getUserInfo(){
        return new UserInfo();
    }

    /**
     * 默認(rèn)構(gòu)造函數(shù)
     */
    public UserInfoService(){

    }

    /**
     * 接收userInfo作為參數(shù)的構(gòu)造函數(shù)
     * @param userInfo
     */
    public UserInfoService(@Valid UserInfo userInfo){

    }
}

驗(yàn)證測(cè)試類ValidationTest.java:

package com.mystudy.elastic.job.springboot.validation;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.executable.ExecutableValidator;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Date;
import java.util.Set;

/**
 * 驗(yàn)證測(cè)試類
 */
public class ValidationTest {

    //驗(yàn)證器對(duì)象
    private Validator validator;

    //待驗(yàn)證對(duì)象
    private UserInfo userInfo;

    //驗(yàn)證結(jié)果集合
    private Set<ConstraintViolation<UserInfo>> set;

    //驗(yàn)證結(jié)果集合
    private Set<ConstraintViolation<UserInfoService>> set1;

    /**
     * 初始化操作
     */
    @Before
    public void init() {
        //初始化驗(yàn)證器
        validator = Validation.buildDefaultValidatorFactory().getValidator();
        //初始化待驗(yàn)證對(duì)象 用戶信息
        userInfo = new UserInfo();
        userInfo.setUserId(" ");
        userInfo.setUserName("  ");
        userInfo.setPassWord("  ");
        userInfo.setPassWord("333333");
        userInfo.setAge(18);
        userInfo.setBirthday(new Date());
        userInfo.setPhone("15987377373");

        UserInfo friend = new UserInfo();
        friend.setUserId("wangxiaoxi");
        friend.setUserName("王小喜");
        friend.setPassWord("wangxiaoxi");
        userInfo.setFriends(new ArrayList() {{
            add(friend);
        }});

    }

    /**
     * 結(jié)果打印
     */
    @After
    public void print() {
        set.forEach(item -> {
            //輸出驗(yàn)證錯(cuò)誤信息
            System.out.println(item.getMessage());
        });
//        set1.forEach(item -> {
//            //輸出驗(yàn)證錯(cuò)誤信息
//            System.out.println(item.getMessage());
//        });
    }

    @Test
    public void nullValidation() {
        //使用驗(yàn)證器對(duì)對(duì)象進(jìn)行驗(yàn)證
        set = validator.validate(userInfo);
    }

    /**
     * 級(jí)聯(lián)驗(yàn)證測(cè)試方法
     */
    @Test
    public void graphValidation() {
        set = validator.validate(userInfo);
    }

    /**
     * 驗(yàn)證注冊(cè)時(shí),郵箱是否為空
     */
    @Test
    public void groupValidation() {
        set = validator.validate(userInfo, UserInfo.RegisterGroup.class);
    }

    /**
     * 組排序
     */
    @Test
    public void groupSequenceValidate() {
        set = validator.validate(userInfo, UserInfo.Group.class);
    }

    /**
     * 對(duì)方法輸入?yún)?shù)進(jìn)行約束注解校驗(yàn)
     */
    @Test
    public void paramValidation() throws NoSuchMethodException {
        //獲取校驗(yàn)執(zhí)行器
        ExecutableValidator executableValidator = validator.forExecutables();

        //待驗(yàn)證對(duì)象
        UserInfoService service = new UserInfoService();
        //待驗(yàn)證方法
        Method method1 = service.getClass().getMethod("setUserInfo", UserInfo.class);
        //方法的輸入?yún)?shù)
        Object[] paramObject = new Object[]{new UserInfo()};

        //對(duì)方法的輸入?yún)?shù)進(jìn)行校驗(yàn)
        set1 = executableValidator.validateParameters(service, method1, paramObject);

    }

    /**
     * 對(duì)方法返回值進(jìn)行約束校驗(yàn)
     */
    @Test
    public void returnValueValidation() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        //獲取校驗(yàn)執(zhí)行器
        ExecutableValidator executableValidator = validator.forExecutables();

        //構(gòu)造要驗(yàn)證的方法對(duì)象
        UserInfoService userInfoService = new UserInfoService();
        Method method = userInfoService.getClass().getMethod("getUserInfo");

        //調(diào)用方法得到返回值
        Object returnValue = method.invoke(userInfoService);

        //校驗(yàn)方法返回值是否符合約束
        set1 = executableValidator.validateReturnValue(userInfoService, method, returnValue);
    }

    /**
     * 對(duì)構(gòu)造函數(shù)輸入?yún)?shù)進(jìn)行校驗(yàn)
     */
    @Test
    public void constructorValidation() throws NoSuchMethodException {

        //獲取驗(yàn)證執(zhí)行器
        ExecutableValidator executableValidator = validator.forExecutables();

        //獲取構(gòu)造函數(shù)
        Constructor<UserInfoService> constructor = UserInfoService.class.getConstructor(UserInfo.class);
        Object[] paramObject = new Object[]{new UserInfo()};

        //校驗(yàn)構(gòu)造函數(shù)
        set1 = executableValidator.validateConstructorParameters(constructor, paramObject);

    }
}

六.自定義注解:

自定義手機(jī)號(hào)注解@interface Phone:

package com.mystudy.elastic.job.springboot.validation;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

/**
 * 自定義手機(jī)號(hào)注解
 */
@Documented
//注解的作用目標(biāo)(可以設(shè)置作用在類,方法等等)
@Target({ElementType.FIELD})
//注解的保留策略(注解的生命周期)
@Retention(RetentionPolicy.RUNTIME)
//不同之處:與注解關(guān)聯(lián)的驗(yàn)證器
@Constraint(validatedBy = PhoneValidator.class)
public @interface Phone {

    //注解驗(yàn)證不通過時(shí)輸出的信息
    String message() default "手機(jī)號(hào)驗(yàn)證錯(cuò)誤";

    //約束注解在驗(yàn)證時(shí)所屬的組別
    Class<?>[] groups() default {};

    //約束注解的有效負(fù)載
    Class<? extends Payload>[] payload() default {};
}

自定義手機(jī)號(hào)注解關(guān)聯(lián)的驗(yàn)證器class PhoneValidator implements ConstraintValidator<Phone, String>:

package com.mystudy.elastic.job.springboot.validation;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 自定義手機(jī)號(hào)注解關(guān)聯(lián)的驗(yàn)證器
 */
public class PhoneValidator implements ConstraintValidator<Phone, String> {

    /**
     * 自定義校驗(yàn)邏輯方法
     *
     * @param s
     * @param constraintValidatorContext
     * @return
     */
    @Override
    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {

        //手機(jī)號(hào)驗(yàn)證規(guī)則:158后面隨便
        String check = "158\\d{8}";
        Pattern regex = Pattern.compile(check);

        String phone = Optional.ofNullable(s).orElse("");
        Matcher matcher = regex.matcher(phone);

        //返回是否匹配
        return matcher.matches();
    }
}

待驗(yàn)證對(duì)象實(shí)體類UserInfo:

package com.mystudy.elastic.job.springboot.validation;

/**
 * 待驗(yàn)證對(duì)象實(shí)體類
 * 用戶信息類
 */
public class UserInfo {

    /**
     * 手機(jī)號(hào)
     */
    @Phone(message = "手機(jī)號(hào)不是158后面隨便的手機(jī)號(hào)")
    private String phone;

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

}

驗(yàn)證測(cè)試類ValidationTest

package com.mystudy.elastic.job.springboot.validation;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;

/**
 * 驗(yàn)證測(cè)試類
 */
public class ValidationTest {

    //驗(yàn)證器對(duì)象
    private Validator validator;

    //待驗(yàn)證對(duì)象
    private UserInfo userInfo;

    //驗(yàn)證結(jié)果集合
    private Set<ConstraintViolation<UserInfo>> set;

    /**
     * 初始化操作
     */
    @Before
    public void init() {
        //初始化驗(yàn)證器
        validator = Validation.buildDefaultValidatorFactory().getValidator();
        //初始化待驗(yàn)證對(duì)象 用戶信息
        userInfo = new UserInfo();
        userInfo.setPhone("15987377373");
    }

    /**
     * 結(jié)果打印
     */
    @After
    public void print() {
        set.forEach(item -> {
            //輸出驗(yàn)證錯(cuò)誤信息
            System.out.println(item.getMessage());
        });
    }

    @Test
    public void nullValidation() {
        //使用驗(yàn)證器對(duì)對(duì)象進(jìn)行驗(yàn)證
        set = validator.validate(userInfo);
    }

}

結(jié)果:
java validation,java,validation框架,java,validation框架,注解文章來源地址http://www.zghlxwxcb.cn/news/detail-814639.html

到了這里,關(guān)于java的validation框架(參數(shù)校驗(yàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java代碼瘦身,巧用 @Valid,@Validated 的分組校驗(yàn)和嵌套檢驗(yàn),實(shí)現(xiàn)高階參數(shù)校驗(yàn)操作

    Java代碼瘦身,巧用 @Valid,@Validated 的分組校驗(yàn)和嵌套檢驗(yàn),實(shí)現(xiàn)高階參數(shù)校驗(yàn)操作

    ? ? ? ? 在 JavaEE 項(xiàng)目中, RestFull 層接收參數(shù)首先要對(duì)一些字段的格式進(jìn)行校驗(yàn),以防止所有查詢都落到數(shù)據(jù)庫,這也是一種合理的限流手段。以前基本上都是用 if...else...,這樣的代碼太啰嗦,除了使用策略模式進(jìn)行優(yōu)化,今天介紹一下校驗(yàn)注解@Valid,@Validated和@PathVariable,

    2024年02月04日
    瀏覽(24)
  • java如何優(yōu)雅的實(shí)現(xiàn)參數(shù)非空校驗(yàn),快速實(shí)現(xiàn)參數(shù)非空校驗(yàn),使用@valid實(shí)現(xiàn)參數(shù)非空校驗(yàn)

    在java項(xiàng)目接口中,有些必傳參數(shù)需要進(jìn)行非空校驗(yàn),如果參數(shù)過多,代碼會(huì)繁雜且冗余,如何優(yōu)雅的對(duì)參數(shù)進(jìn)行非空校驗(yàn),下面是實(shí)現(xiàn)流程 用實(shí)體類接收參數(shù),使用非空注解編輯參數(shù)內(nèi)容 使用 @Valid 注解對(duì)參數(shù)進(jìn)行攔截,整體進(jìn)行非空校驗(yàn) 如果是SpringBoot項(xiàng)目,引入web開發(fā)包

    2024年02月08日
    瀏覽(25)
  • Java參數(shù)校驗(yàn)@Valid中@Length和@Size的用法和區(qū)別

    在Spring框架中,@Length和@Size都是用于參數(shù)長度校驗(yàn)的注解,但它們之間存在一些關(guān)鍵的區(qū)別: @Length 是Hibernate Validator提供的一個(gè)注解,它用于校驗(yàn)字符串的長度。 @Size 也是Hibernate Validator提供的注解,但它可以用于多種數(shù)據(jù)類型,不僅僅是字符串。對(duì)于字符串,它可以校驗(yàn)長

    2024年04月15日
    瀏覽(26)
  • @Valid、@Validated參數(shù)校驗(yàn)詳解

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-M6CfNsNC-1687851467867)(images/20200913110853722.png)] 說明:若不做異常處理,@Validated注解的默認(rèn)異常消息如下(示例): 因此我們?cè)谶@里做了一個(gè)全局的異常處理類,用于處理參數(shù)校驗(yàn)失敗后拋出的異常,同

    2024年02月11日
    瀏覽(26)
  • Springboot——@valid 做字段校驗(yàn)和自定義注解

    Springboot——@valid 做字段校驗(yàn)和自定義注解

    再項(xiàng)目開發(fā)中,針對(duì)前端傳遞的參數(shù)信息,有些接口中需要寫大量的 if 判斷,導(dǎo)致代碼臃腫,不夠優(yōu)雅。 此時(shí),可以使用 @Valid 實(shí)現(xiàn)基本的字段校驗(yàn)。 springboot 2.3之前 ,直接進(jìn)行開發(fā)即可,無需引用額外的依賴 集成在 spring-boot-starter-web 中。 springboot 2.3之后 需要額外引入

    2023年04月26日
    瀏覽(22)
  • SpringBoot參數(shù)校驗(yàn)@Validated、@Valid

    SpringBoot參數(shù)校驗(yàn)@Validated、@Valid

    在實(shí)際開發(fā)中,前端校驗(yàn)并不安全,任何人都可以通過接口來調(diào)用我們的服務(wù),就算加了一層token的校驗(yàn),有心人總會(huì)轉(zhuǎn)空子,來傳各式各樣錯(cuò)誤的參數(shù),如果后端不校驗(yàn),導(dǎo)致數(shù)據(jù)庫數(shù)據(jù)混亂、特別是關(guān)于金額的數(shù)據(jù),可能一個(gè)接口把公司都給干倒了 0、返回類(可以不用看

    2024年01月23日
    瀏覽(22)
  • springboot使用@Valid 和 @Validated 注解校驗(yàn)詳解以及編寫一個(gè)自定義全局異常類

    springboot使用@Valid 和 @Validated 注解校驗(yàn)詳解以及編寫一個(gè)自定義全局異常類

    全局異常處理類 驗(yàn)證: ============================================== 導(dǎo)入所需要的包: 如果你是 springboot 項(xiàng)目,那么可以不用引入了,已經(jīng)引入了,他就存在于最核心的 web 開發(fā)包里面。 如果你不是 springboot 項(xiàng)目,那么引入下面依賴即可: 新建三個(gè)實(shí)體類 實(shí)現(xiàn)一: 使用@Valid注解修

    2024年02月10日
    瀏覽(30)
  • spring參數(shù)校驗(yàn)@Validated及嵌套校驗(yàn)

    本文介紹項(xiàng)目中校驗(yàn) @Validated的使用,主要分參數(shù)對(duì)象屬性校驗(yàn),嵌套校驗(yàn),集合在對(duì)象屬性中校驗(yàn),集合作為參數(shù)校驗(yàn)。 controller層 測(cè)試輸入 輸出 這里作為參數(shù),如果使用List接收是不起作用的,必須用ValidList,這個(gè)類中有標(biāo)記 @Valid @Valid private ListE list = new ArrayList(); 如果在

    2024年02月09日
    瀏覽(25)
  • SpringBoot 使用validator進(jìn)行參數(shù)校驗(yàn)(實(shí)例操作+注意事項(xiàng)+自定義參數(shù)校驗(yàn))

    SpringBoot 使用validator進(jìn)行參數(shù)校驗(yàn)(實(shí)例操作+注意事項(xiàng)+自定義參數(shù)校驗(yàn))

    ①、引入依賴 ②、創(chuàng)建實(shí)體類 ③、建立控制層 ④、進(jìn)行測(cè)試 作為測(cè)試demo,到這里就可以直接測(cè)試了 ①、@NotNull ,@NotEmpty 和 @NotBlank 三者的區(qū)別 @NotNull、@NotEmpty 和 @NotBlank 都是用于Java中進(jìn)行參數(shù)校驗(yàn)的注解,它們之間的區(qū)別如下: @NotNull 注解用于限制參數(shù)不能為null。 @N

    2024年02月07日
    瀏覽(27)
  • Spring Boot 使用validation校驗(yàn)參數(shù)

    在看公司代碼的時(shí)候,發(fā)現(xiàn)是用了 Spring Boot Validation 去檢驗(yàn)參數(shù)的,但是后面又在代碼里去檢驗(yàn)參數(shù)去了,而且這個(gè) Spring Boot Validation 校驗(yàn)好像并不生效。于是自己摸索研究了一下。 雖然項(xiàng)目使用的校驗(yàn)都是 javax.validation ,但是不引入這個(gè)依賴他是真的不生效。 gradle如下:

    2024年01月25日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包