- 在model对象中,需要进行参数校验的属性加上注解
public class Admin extends User {
private String openId;//openId
@NotEmpty(message = "员工账号不能为空")
private String id;//账号
@NotEmpty(message = "员工姓名不能为空")
private String name;//姓名
@NotEmpty(message = "员工部门不能为空")
private String apartment;//部门
private String team;//班组
private String position;//职位
@Pattern(regexp = "^(13[0-9]|14[0-9]|15[0-9]|18[0-9]|17[0-9])\\d{8}$", message = "手机格式错误")
private String mobilePhone;//移动电话
private String landline;//座机
@Email(message = "邮箱格式错误")
private String intranetMailbox;//内网邮箱
@Email(message = "邮箱格式错误")
private String extranetMailbox;//外网邮箱
}
常用的Valid注解
@Null 限制只能为null
@NotNull 限制必须不为null
@AssertFalse 限制必须为false
@AssertTrue 限制必须为true
@DecimalMax(value) 限制必须为一个不大于指定值的数字
@DecimalMin(value) 限制必须为一个不小于指定值的数字
@Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Future 限制必须是一个将来的日期
@Max(value) 限制必须为一个不大于指定值的数字
@Min(value) 限制必须为一个不小于指定值的数字
@Past 限制必须是一个过去的日期
@Pattern(value) 限制必须符合指定的正则表达式
@Size(max,min) 限制字符长度必须在min到max之间
@Past 验证注解的元素值(日期类型)比当前时间早
@NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email`
- Controller层
/**
* 新增员工
* 员工账号,名称, 部门不能为空
* @param admin
* @return
*/
@PostMapping("/insertWXAdmin")
public JSONObject insertWXAdmin(@Valid @RequestBody Admin admin){
System.out.println(admin);
return adminService.insertWXAdmin(admin);
}
3.全局异常捕获
/**
* 参数异常检验
* @param ex
* @return
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public JSONObject methodArgumentNotValidException(MethodArgumentNotValidException ex) {
LOGGER.error("raised MethodArgumentNotValidException : " + ex);
BindingResult result = ex.getBindingResult();
final List<FieldError> fieldErrors = result.getFieldErrors();
StringBuilder builder = new StringBuilder();
for (FieldError error : fieldErrors) {
builder.append( error.getDefaultMessage()+",");
}
return ResultUtil.returnJSONObject(400, builder.toString(), null);
}
- 使用Postman进行测试
请求内容
{
"id": "",
"name": "",
"apartment": "",
"team": "",
"position": "班员",
"mobilePhone": "15923",
"landline":"",
"intranetMailbox": "",
"extranetMailbox":"ranjun1999p163.com",
"remark":"无",
"openId": "",
"role": "管理员",
"major": "业扩",
"password":"123"
}
返回结果
{
"code": 400,
"data": null,
"message": "手机格式错误,邮箱格式错误,员工部门不能为空,员工姓名不能为空,员工账号不能为空,"
}