使用@Validate分組驗(yàn)證參數(shù)
@Validate分組驗(yàn)證參數(shù)
public interface Group { /** * 新增操作 */ interface ADD {} /** * 更新操作 */ interface UPDATE {} /** * 更新操作 */ interface DELETE {} }
@Data @EqualsAndHashCode(callSuper = false) public class StudentInfoDto implements Serializable { private static final long serialVersionUID = 1L; @JsonSerialize(using = ToStringSerializer.class) @NotBlank(message = "主鍵不能為空", groups = {Group.DELETE.class, Group.UPDATE.class}) private String id; private String name; }
@PostMapping(value = "/delete") public Result delete(@RequestBody @Validated(value = Group.DELETE.class) final StudentInfoDto studentInfoDto) { return studentService.delete(studentInfoDto.getId()); }
@Validated 注解是 Spring Framework 提供的一種用于方法級(jí)別參數(shù)驗(yàn)證的注解。
它通常與 Bean Validation(JSR-380)規(guī)范結(jié)合使用,用于對(duì)方法參數(shù)進(jìn)行驗(yàn)證。
這個(gè)注解可以放在方法的參數(shù)列表上,表示需要對(duì)該參數(shù)進(jìn)行驗(yàn)證。
在你提到的 @Validated(value = Group.DELETE.class) 中,value = Group.DELETE.class 是一個(gè)參數(shù),它的作用是指定驗(yàn)證時(shí)使用的驗(yàn)證分組(Validation Group)。
驗(yàn)證分組可以用于在不同場(chǎng)景下執(zhí)行不同的驗(yàn)證邏輯。
在這里,Group.DELETE.class 可能是一個(gè)自定義的驗(yàn)證分組類,它定義了在執(zhí)行刪除操作時(shí)需要進(jìn)行的驗(yàn)證規(guī)則。
舉個(gè)例子
假設(shè)有一個(gè)用戶刪除的方法,只有當(dāng)用戶的權(quán)限滿足一定條件時(shí)才能執(zhí)行刪除操作。
那么就可以定義一個(gè)刪除操作的驗(yàn)證分組,其中包含對(duì)用戶權(quán)限的驗(yàn)證規(guī)則。
當(dāng)方法參數(shù)被 @Validated(value = Group.DELETE.class) 注解標(biāo)記時(shí),就會(huì)使用指定的驗(yàn)證分組對(duì)方法參數(shù)進(jìn)行驗(yàn)證。
需要注意
@Validated 注解是 Spring 框架提供的,與 @Valid 注解不同,后者是 Bean Validation(JSR-380)規(guī)范中的注解。
雖然它們都可以用于參數(shù)驗(yàn)證,但 @Validated 注解更加靈活,支持分組驗(yàn)證等功能。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot如何實(shí)現(xiàn)導(dǎo)入其他配置類
這篇文章主要介紹了springboot如何實(shí)現(xiàn)導(dǎo)入其他配置類問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11基于springboot實(shí)現(xiàn)redis分布式鎖的方法
這篇文章主要介紹了基于springboot實(shí)現(xiàn)redis分布式鎖的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11阿里通用OCR文字識(shí)別/圖像識(shí)別/圖片識(shí)別對(duì)接代碼示例(Java篇)
這篇文章主要介紹了阿里通用OCR文字識(shí)別/圖像識(shí)別/圖片識(shí)別對(duì)接(Java篇)的相關(guān)資料,文中詳細(xì)介紹了包括開通服務(wù)、測(cè)試圖片、編寫識(shí)別代碼、處理識(shí)別結(jié)果等步驟,需要的朋友可以參考下2024-12-12Java實(shí)現(xiàn)使用Websocket發(fā)送消息詳細(xì)代碼舉例
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)使用Websocket發(fā)送消息的相關(guān)資料,WebSocket是一種協(xié)議,用于在Web應(yīng)用程序和服務(wù)器之間建立實(shí)時(shí)、雙向的通信連接,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05SpringBoot數(shù)據(jù)訪問自定義使用Druid數(shù)據(jù)源的方法
本文記錄Druid數(shù)據(jù)源的使用,自定義實(shí)現(xiàn)Drud的功能、監(jiān)控頁(yè)、登錄、統(tǒng)計(jì)等。對(duì)SpringBoot數(shù)據(jù)訪問使用Druid數(shù)據(jù)源的相關(guān)知識(shí)感興趣額朋友一起看看吧2021-08-08Java中import java.util.Scanner的用處詳解
文章主要介紹Java中的Scanner類及其常用方法next()和nextLine()的區(qū)別,next()方法在遇到空格、Tab鍵、回車鍵等分隔符時(shí)結(jié)束輸入,而nextLine()方法則接收所有輸入,直到遇到回車鍵2024-11-11