您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了Spring @Valid和@Validated有什么區別,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。
兩者區別
@Valid | @Validated | |
---|---|---|
標準 | 標準JSR-303規范 | 增強JSR-303規范 |
包 | javax.validation | org.springframework.validation |
驗證結果 | BindingResult result | BindingResult result |
分組支持 | 不支持 | 支持 |
分組序列 | 不支持 | 支持 |
類型注解 | ? | 支持 |
方法注解 | 支持 | 支持 |
方法參數注解 | 支持 | 支持 |
構造函數注解 | 支持 | ? |
成員屬性注解 | 支持 | 不支持 |
嵌套驗證 | 支持 | 不支持 |
分組示例
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必須為正整數") 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必須為正整數") private Long pid; @NotNull(message = "vid不能為空") @Min(value = 1, message = "vid必須為正整數") 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; } }
以上就是關于Spring @Valid和@Validated有什么區別的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。