使用Hibernate验证用户信息
1.注解
@Null 被注释的元素必须为 null @NotNull 被注释的元素必须不为 null @AssertTrue 被注释的元素必须为 true @AssertFalse 被注释的元素必须为 false @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @Size(max=, min=) 被注释的元素的大小必须在指定的范围内 @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内 @Past 被注释的元素必须是一个过去的日期 @Future 被注释的元素必须是一个将来的日期 @Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式 Hibernate Validator 附加的 constraint @NotBlank(message =) 验证字符串非null,且长度必须大于0 @Email 被注释的元素必须是电子邮箱地址 @Length(min=,max=) 被注释的字符串的大小必须在指定的范围内 @NotEmpty 被注释的字符串的必须非空 @Range(min=,max=,message=) 被注释的元素必须在合适的范围内
2.需要在方法上添加 @Valid 注解 以及可以 BindingResult 用来搜集验证时的错误信息
@ApiOperation(value = "修改用户信息", notes = "修改用户信息", httpMethod = "POST") @PostMapping("update") public IMOOCJSONResult update(@ApiParam(name = "userId",value = "用户id",required = true) @RequestParam String userId, @RequestBody @Valid CenterUserBO centerUserBO, BindingResult result, HttpServletRequest request, HttpServletResponse response ){ //判断BindingResult是否保存错误验证信息,否则直接return if (result.hasErrors()){ Map<String,String> errorMap=getErrors(result); return IMOOCJSONResult.errorMap(errorMap); } Users usersResult=centerUserService.updateUserInfo(userId,centerUserBO); usersResult=setNullProperty(usersResult); CookieUtils.setCookie(request,response,"user", JsonUtils.objectToJson(usersResult),true); return IMOOCJSONResult.ok(); }
3.添加相应方法搜集错误信息
private Map<String,String> getErrors(BindingResult result){ Map<String,String> map=new HashMap<>(); List<FieldError> errorList=result.getFieldErrors(); for (FieldError error : errorList) { //发生验证错误所对应的某一个属性 String errorField=error.getField(); //验证错误信息 String errorMsg=error.getDefaultMessage(); map.put(errorField,errorMsg); } return map; }
4.对象上添加相应注解
@ApiModelProperty(value="用户名", name="username", example="json", required = false) private String username; @ApiModelProperty(value="密码", name="password", example="123456", required = false) private String password; @ApiModelProperty(value="确认密码", name="confirmPassword", example="123456", required = false) private String confirmPassword; @NotBlank(message = "用户昵称不能为空") @Length(max = 12, message = "用户昵称不能超过12位") @ApiModelProperty(value="用户昵称", name="nickname", example="杰森", required = false) private String nickname; @Length(max = 12, message = "用户真实姓名不能超过12位") @ApiModelProperty(value="真实姓名", name="realname", example="杰森", required = false) private String realname; @Pattern(regexp = "^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\\d{8})$", message = "手机号格式不正确") @ApiModelProperty(value="手机号", name="mobile", example="13999999999", required = false) private String mobile; @Email @ApiModelProperty(value="邮箱地址", name="email", example="imooc@imooc.com", required = false) private String email; @Min(value = 0, message = "性别选择不正确") @Max(value = 2, message = "性别选择不正确") @ApiModelProperty(value="性别", name="sex", example="0:女 1:男 2:保密", required = false) private Integer sex; @ApiModelProperty(value="生日", name="birthday", example="1900-01-01", required = false) private Date birthday;
5.测试...................