Spring @Valid和@Validated區(qū)別和用法實例
更新時間:2020年04月27日 11:17:53 作者:小伍2013
這篇文章主要介紹了Spring @Valid和@Validated區(qū)別和用法實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
兩者區(qū)別
@Valid |
@Validated | |
|---|---|---|
| 標準 | 標準JSR-303規(guī)范 | 增強JSR-303規(guī)范 |
| 包 | javax.validation | org.springframework.validation |
| 驗證結果 | BindingResult result | BindingResult result |
| 分組支持 | 不支持 | 支持 |
| 分組序列 | 不支持 | 支持 |
| 類型注解 | ? | 支持 |
| 方法注解 | 支持 | 支持 |
| 方法參數(shù)注解 | 支持 | 支持 |
| 構造函數(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;
}
@RestController
public 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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
springboot中如何實現(xiàn)kafa指定offset消費
這篇文章主要介紹了springboot中如何實現(xiàn)kafa指定offset消費,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12
詳解IntelliJ IDEA中TortoiseSVN修改服務器地址的方法
這篇文章主要介紹了詳解IntelliJ IDEA中TortoiseSVN修改服務器地址的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
Java中Runnable與Callable接口的區(qū)別詳解
這篇文章主要為大家詳細介紹了Java中Runnable與Callable接口的區(qū)別,文中的示例代碼講解詳細,對我們學習Java有一定的幫助,需要的可以參考一下2023-03-03
Java 靜態(tài)數(shù)據(jù)初始化的示例代碼
這篇文章主要介紹了Java 靜態(tài)數(shù)據(jù)初始化的示例代碼,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下2020-09-09

