@Validated自定义实现多种校验

更新时间:2023-05-09 18:02:09 阅读: 评论:0

@Validated⾃定义实现多种校验
在开发过程中经常会遇到不同的场景和⽅法,需要对同⼀个类参数进⾏不同的校验,如何通过注解实现不同场景的校验,下⾯举个例⼦:⽤户信息ur对象的新增和修改时,新增不需要校验id,⽽修改时必须校验id不能为空:
1.定义实体类
package ity;
import org.straints.Length;
import straints.NotNull;
public class Ur {
@NotNull(groups ={valid2.class})
private Integer id;
@NotNull(groups ={valid1.class,valid2.class})
@Length(min =6,max =32,groups ={valid1.class,valid2.class})
private String name;
@NotNull(groups ={valid1.class,valid2.class})
private String x;
@NotNull(groups ={valid1.class,valid2.class})
@Length(min =0,max =100,groups ={valid1.class,valid2.class})
private Integer age;
public Integer getId(){
return id;
}
public void tId(Integer id){
this.id = id;
}
public String getName(){
return name;
}
public void tName(String name){
this.name = name;
}
public String getSex(){
return x;
}
public void tSex(String x){
this.x = x;
}
public Integer getAge(){
return age;
}
public void tAge(Integer age){
this.age = age;
}
/**
* 新增时候参数校验
*/
public interface valid1{
public interface valid1{
}
/**
* 修改时参数校验
*/
public interface valid2{
}
}
上⾯通过定义了两个interface,valid1和valid2,通过groups参数配置在参数校验信息上,相当于定义了两个检验⽅式,有的参数参与⼀种校验,有的参与两个校验⽅式。
2.Controller层控制传参校验⽅式
import ity.Ur;
import org.sang.rvice.UrService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@RestController(value ="/ur")
public class UrController {
@Autowired
private UrService urService;
/**
* 新增⽤户
* @param ur
* @return
*/
@RequestMapping("/inrt")
@ResponBody
public Ur inrt(@RequestBody @Validated(Ur.valid1.class) Ur ur){
return urService.inrt(ur);
}
/**
* 修改⽤户
* @param ur
* @return
*/
@RequestMapping("/update")
@ResponBody
public boolean update(@RequestBody @Validated(Ur.valid2.class) Ur ur){
return urService.update(ur);
}
}
如上⾯代码可以控制每个⽅法传参时参与那种参数校验,可以根据实际业务场景,定义更多的interface去实现不同的参数校验⽅式。

本文发布于:2023-05-09 18:02:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/566139.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:校验   参数   定义   场景   新增   实现
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图