Spring @Valid和@Validated區(qū)別和用法實(shí)例
更新時(shí)間:2020年04月27日 11:17:53 作者:小伍2013
這篇文章主要介紹了Spring @Valid和@Validated區(qū)別和用法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
兩者區(qū)別
@Valid |
@Validated | |
---|---|---|
標(biāo)準(zhǔn) | 標(biāo)準(zhǔn)JSR-303規(guī)范 | 增強(qiáng)JSR-303規(guī)范 |
包 | javax.validation | org.springframework.validation |
驗(yàn)證結(jié)果 | BindingResult result | BindingResult result |
分組支持 | 不支持 | 支持 |
分組序列 | 不支持 | 支持 |
類型注解 | ? | 支持 |
方法注解 | 支持 | 支持 |
方法參數(shù)注解 | 支持 | 支持 |
構(gòu)造函數(shù)注解 | 支持 | ? |
成員屬性注解 | 支持 | 不支持 |
嵌套驗(yàn)證 | 支持 | 不支持 |
分組示例
public interface First{} public interface Second{} public class User { // 所有都驗(yàn)證 @NotNull(message = "...") private int id; // First 才驗(yàn)證 @NotNull(message = "...", groups = { First.class }) private String username; // First 或 Second 才驗(yàn)證 @NotNull(message = "...", groups = { First.class, Second.class }) private String content; // First 驗(yàn)證 NotEmpty,Second 驗(yàn)證 Size @NotEmpty(message = "...", groups = { First.class }) @Size(message = "...", min = 3, max = 8, groups = { Second.class }) private String height; } // 只驗(yàn)證 Second 分組和沒有分組的屬性 public String save(@Validated( { Second.class }) User user, BindingResult result) { if (result.hasErrors()) { return "validate/error"; } return "redirect:/success"; }
分組序列
public interface GroupA {} public interface GroupB {} @GroupSequence( { GroupA.class, GroupB.class }) public interface Group {}
public @ResponseBody String save(@Validated({ Group.class }) User user, BindingResult result) { if(result.hasErrors()) { return false; } return true; }
嵌套驗(yàn)證
public class Item { @NotNull(message = "id不能為空") @Min(value = 1, message = "id必須為正整數(shù)") private Long id; @Valid @NotNull(message = "props不能為空") @Size(min = 1, message = "至少要有一個(gè)屬性") private List<Prop> props; }
public class Prop { @NotNull(message = "pid不能為空") @Min(value = 1, message = "pid必須為正整數(shù)") private Long pid; @NotNull(message = "vid不能為空") @Min(value = 1, message = "vid必須為正整數(shù)") private Long vid; @NotBlank(message = "pidName不能為空") private String pidName; @NotBlank(message = "vidName不能為空") private String vidName; }
@RestController public class ItemController { @RequestMapping("/item/add") public void addItem(@Validated Item item, BindingResult bindingResult) { doSomething(); } }
驗(yàn)證多個(gè)對象
@Controller public class PeopleController { @RequestMapping("/add") public @ResponseBody String add(@Validated People pp, BindingResult result1, @Validated Person ps, BindingResult result2) { if(result1.hasErrors()) { return false; } if(result2.hasErrors()) { return false; } return true; } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
springboot中如何實(shí)現(xiàn)kafa指定offset消費(fèi)
這篇文章主要介紹了springboot中如何實(shí)現(xiàn)kafa指定offset消費(fèi),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12詳解IntelliJ IDEA中TortoiseSVN修改服務(wù)器地址的方法
這篇文章主要介紹了詳解IntelliJ IDEA中TortoiseSVN修改服務(wù)器地址的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12Java中Runnable與Callable接口的區(qū)別詳解
這篇文章主要為大家詳細(xì)介紹了Java中Runnable與Callable接口的區(qū)別,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下2023-03-03Java 靜態(tài)數(shù)據(jù)初始化的示例代碼
這篇文章主要介紹了Java 靜態(tài)數(shù)據(jù)初始化的示例代碼,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下2020-09-09