• 使用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.测试...................

  • 相关阅读:
    状态压缩 + 暴力 HDOJ 4770 Lights Against Dudely
    简单几何(推公式) UVA 11646 Athletics Track
    简单几何(四边形形状) UVA 11800 Determine the Shape
    简单几何(求交点) UVA 11437 Triangle Fun
    计算几何模板
    简单几何(相对运动距离最值) UVA 11796 Dog Distance
    简单几何(求划分区域) LA 3263 That Nice Euler Circuit
    覆盖的面积 HDU
    Desert King 最小比率生成树 (好题)
    约会安排 (区间合并)毒瘤题
  • 原文地址:https://www.cnblogs.com/yangbom/p/14115915.html
Copyright © 2020-2023  润新知