Spring @Valid和@Validated區(qū)別和用法實例
兩者區(qū)別
@Valid @Validated 標準 標準JSR-303規(guī)范 增強JSR-303規(guī)范 包 javax.validation org.springframework.validation 驗證結(jié)果 BindingResult result BindingResult result 分組支持 不支持 支持 分組序列 不支持 支持 類型注解 ? 支持 方法注解 支持 支持 方法參數(shù)注解 支持 支持 構(gòu)造函數(shù)注解 支持 ? 成員屬性注解 支持 不支持 嵌套驗證 支持 不支持
分組示例
public interface First{}public interface Second{}public class User {// 所有都驗證@NotNull(message = '...')private int id; // First 才驗證@NotNull(message = '...', groups = { First.class })private String username; // First 或 Second 才驗證@NotNull(message = '...', groups = { First.class, Second.class })private String content;// First 驗證 NotEmpty,Second 驗證 Size@NotEmpty(message = '...', groups = { First.class })@Size(message = '...', min = 3, max = 8, groups = { Second.class })private String height;}// 只驗證 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;}
嵌套驗證
public class Item { @NotNull(message = 'id不能為空') @Min(value = 1, message = 'id必須為正整數(shù)') private Long id;@Valid @NotNull(message = 'props不能為空') @Size(min = 1, message = '至少要有一個屬性') 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;}
@RestControllerpublic class ItemController { @RequestMapping('/item/add') public void addItem(@Validated Item item, BindingResult bindingResult) { doSomething(); }}
驗證多個對象
@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)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關文章:
1. 基于PHP做個圖片防盜鏈2. ASP.NET MVC把數(shù)據(jù)庫中枚舉項的數(shù)字轉(zhuǎn)換成文字3. asp.net core 認證和授權(quán)實例詳解4. XML在語音合成中的應用5. .NET中實現(xiàn)對象數(shù)據(jù)映射示例詳解6. 基于javaweb+jsp實現(xiàn)企業(yè)車輛管理系統(tǒng)7. ASP.NET MVC使用Boostrap實現(xiàn)產(chǎn)品展示、查詢、排序、分頁8. 如何使用ASP.NET Core 配置文件9. jscript與vbscript 操作XML元素屬性的代碼10. php使用正則驗證密碼字段的復雜強度原理詳細講解 原創(chuàng)
