java中怎么用validation组合字段

59次阅读
没有评论

共计 1865 个字符,预计需要花费 5 分钟才能阅读完成。

在 Java 中,可以使用 validation 框架来组合字段进行验证。以下是一个示例:

  1. 首先,确保你已经添加了 validation 框架的依赖。在 Maven 项目中,可以在 pom.xml 文件中添加以下依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
  1. 创建一个 Java 类,用于表示需要验证的对象。在该类中,使用 validation 注解来标记需要验证的字段和验证规则。例如:
public class User {@NotBlank(message = " 用户名不能为空 ")
    private String username;

    @NotBlank(message = " 密码不能为空 ")
    private String password;

    // 其他字段...

    // 省略 getter 和 setter 方法
}

在上面的示例中,使用了 @NotBlank 注解来确保 usernamepassword字段不为空。

  1. 创建一个验证器类,用于实现验证逻辑。在该类中,可以使用 validation 框架提供的注解来标记需要验证的组合字段和验证规则。例如:
public class UserValidator implements ConstraintValidator<UserValidation, User> {@Override
    public boolean isValid(User user, ConstraintValidatorContext context) {// 自定义验证逻辑
        if (user.getUsername().equals(user.getPassword())) {context.disableDefaultConstraintViolation();
            context.buildConstraintViolationWithTemplate(" 用户名和密码不能相同 ")
                    .addPropertyNode("password").addConstraintViolation();
            return false;
        }
        return true;
    }
}

在上面的示例中,定义了一个 UserValidator 类,并实现了 ConstraintValidator<UserValidation, User> 接口。在 isValid 方法中,可以编写自定义的验证逻辑。如果验证不通过,可以使用 ConstraintValidatorContext 对象来添加错误信息。

  1. 创建一个注解类,用于标记需要验证组合字段的对象。例如:
@Constraint(validatedBy = UserValidator.class)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface UserValidation {String message() default " 验证失败 ";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};}

在上面的示例中,定义了一个 UserValidation 注解,并使用 @Constraint 注解指定了该注解需要由 UserValidator 类来处理。

  1. 在需要进行验证的地方,使用 @Validated 注解标记需要验证的对象,并使用 @UserValidation 注解标记需要验证的组合字段。例如:
@RestController
@Validated
public class UserController {@PostMapping("/user")
    public ResponseEntity<String> createUser(@Valid @UserValidation @RequestBody User user) {// 处理创建用户的逻辑
        // ...
        return ResponseEntity.ok(" 用户创建成功 ");
    }
}

在上面的示例中,使用 @Valid 注解标记了 User 对象,用于触发验证。使用 @UserValidation 注解标记了需要验证的组合字段。

这样,当调用 createUser 方法时,会自动触发验证逻辑。如果验证不通过,将会抛出 MethodArgumentNotValidException 异常,可以在异常处理中获取验证错误信息。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-13发表,共计1865字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)