溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Spring @Valid和@Validated有什么區(qū)別

發(fā)布時間:2020-07-30 11:26:47 來源:億速云 閱讀:186 作者:小豬 欄目:編程語言

這篇文章主要為大家展示了Spring @Valid和@Validated有什么區(qū)別,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

兩者區(qū)別


     @Valid
@Validated
標(biāo)準(zhǔn)標(biāo)準(zhǔn)JSR-303規(guī)范增強(qiáng)JSR-303規(guī)范
javax.validationorg.springframework.validation
驗(yàn)證結(jié)果BindingResult resultBindingResult 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 = "至少要有一個屬性")
  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)證多個對象

@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; 
  } 
}

以上就是關(guān)于Spring @Valid和@Validated有什么區(qū)別的內(nèi)容,如果你們有學(xué)習(xí)到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI