Springboot服务端数据校验
一,实体对象做数据校验
1,pojo类
public class User {
/*
* @NotNull:对基本数据类型的对象类型做非空校验
* @NotBlank:对字符串类型做非空校验
* @NotEmpty:对集合类型做非空校验
* */
@NotNull
private Integer id;
@NotBlank
private String password;
@NotBlank
private String username;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password == null ? null : password.trim();
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username == null ? null : username.trim();
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", password='" + password + '\'' +
", username='" + username + '\'' +
'}';
}
}
2,controller类
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/addUser")
public String addUser(@Validated User user, BindingResult result)
{
//如果错了就进去
if(result.hasErrors())
{
//这里只是为了输出一下数据校验信息
List<ObjectError> list= result.getAllErrors();
for (ObjectError err:list) {
FieldError fieldError=(FieldError)err;
String field = fieldError.getField();
String msg = fieldError.getDefaultMessage();
System.out.println(field+"\t"+msg);
}
return "addUser";
};
System.out.println(user);
return "ok";
};
}
3,html页面

二,自定义错误提示信息
1,在注解中定义提示信息 硬编码形式
2,在配置文件中定义提示信息
配置文件必须叫ValidationMessages.properties
会有乱码问题需要借助jdk工具
进入jdk的bin目录
运行native2ascii.exe工具
把中文打入下面运行得到码 复制到配置文件
2,解决页面跳转异常
直接跳到页面时因为这个user没有注入所以会报错
3,修改参数key的值 添加@ModelAttribute注解
4,其他校验规则
@NotNull:判断基本数据类型的对象类型是否为null
@NotBlank:判断字符串是否为null或者是空串(去掉首尾空格)
@NotEmpty:判断集合是否为空
@Length:判断字符的长度(最大或者最小)
@Min:判断数值最小值
@Max:判断数值最大值
@Email:判断邮箱是否合法

5,Controller中其他参数的校验
1,页面

2,Controller类
注意一定要在类上加@Validated注解

3,异常类



浙公网安备 33010602011771号