使用SpringMVC的@Validated注解验证
作用:在Controller层 验证model数据是否正确
1 Bean实体类加注解
2controller 入参前加@Validated注解
会把返回的错误信息写入result中 实际项目中会封装好相应的javcscript等方法,只需要调用就可以返回页面提示给用户错误信息。
3.@Validated的分组特性
在对新增的用户进行ID验证,增加@Validated({addUser.class}) User user接口类用来表示新增的User.getId()需要验证。
在User实体类中添加groups分组@NotEmpty(groups={addUser.class})与UserController中@Validated({addUser.class})对应,说明在执行saveAddUser新增用户的情况下,才对新增的用户id进行验证。
以上三步就可以简单地完成分组验证,但是对分组验证补充一下三点:
第一是:不分配groups分组时,默认每次都需要验证。
第二是:通过groups分组可以对同一个变量进行多个验证,如下代码
//对用户名进行两次不同情况的验证。
@NotEmpty(groups={First.class})
@Size(min=1,max=10,groups={Second.class})
public String username;
第三是:默认的情况下,不同的分组约束验证是无序的,但是在有些情况下验证的相互约束很重要(比如前一个组验证失败,后面的将不再验证等情况),所以groups分组的验证也有前后验证顺序。使用@GroupSequence注解进行排序。
/*
* 分组顺序接口类
*/
import javax.validation.GroupSequence;
//分组序列先Frist再Second
@GroupSequence({First.class,Second.class})
public interface Group{
}
@Controller
public class UserController {
@RequestMapping("/saveAdd")
public String saveAddUser(@Validated({Group.class}) User user, BindingResult result) {
if(result.hasErrors()) {
return "error";
}
return "success";
}