Spring@Valid和@Validated有什么区别

这篇文章主要为大家展示了Spring @Valid和@Validated有什么区别,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

原州网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联建站从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站

两者区别


     @Valid
@Validated
标准标准JSR-303规范增强JSR-303规范
javax.validationorg.springframework.validation
验证结果BindingResult resultBindingResult 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 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有什么区别的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看到。


文章名称:Spring@Valid和@Validated有什么区别
链接分享:http://ybzwz.com/article/pojppe.html