【问题标题】:How do I add small validation check for two fields in java如何在java中为两个字段添加小的验证检查
【发布时间】:2021-05-14 20:32:48
【问题描述】:

我遇到了一个场景,我有两个字段,例如 CA 和 ID 字段,我需要添加一个简单的检查以确保 CA 和 ID 都不能为空,并且应该抛出一个错误消息,如 400 bad request .但是,当一个字段为空而另一个不为空时,例如当 ID 为 NULL 并且 CA 字段有某个值时,它应该能够处理请求,它应该为请求发送 200 ok。

任何人都可以为这种情况提出一种验证方法。

【问题讨论】:

标签: java spring validation


【解决方案1】:

假设你有一个这样的模型:

public class Testmodel {

@NotNull(message = "MUST NOT BE NULL")
private int CA;

@NotNull(message = "MUST NOT BE NULL")
private int ID;

public Testmodel(@NotNull(message = "MUST NOT BE NULL") int CA, @NotNull(message = "MUST NOT BE NULL") int ID) {
    this.CA = CA;
    this.ID = ID;
}

public Testmodel() {
}

public int getCA() {
    return CA;
}

public void setCA(int CA) {
    this.CA = CA;
}

public int getID() {
    return ID;
}

public void setID(int ID) {
    this.ID = ID;
}}

然后您在验证两个字段时需要执行以下操作:

import javax.validation.Validator;

private final Validator validator;

@Autowired
public YourClass(Validator validator) {
        this.validator = validator;
}

HttpStatus testValidation() {
        Testmodel testmodel = new Testmodel();
        Set<ConstraintViolation<Testmodel>> violations = validator.validate(testmodel);
    if (violations.isEmpty()) {
        return HttpStatus.OK;
    } else {
        Map<String, Object> data = handleConstraintViolations(violations);
        return HttpStatus.BAD_REQUEST;
    }
}

private Map<String, Object> handleConstraintViolations(Set<ConstraintViolation<Testmodel>> violationsList) {
    Map<String, Object> data = new HashMap<>();

    for (ConstraintViolation<?> violation : violationsList) {
        data.put(violation.getPropertyPath().toString(), violation.getMessage());
    }

    CustomValidationException ce = new CustomValidationException("Invalid fields!", data);
    return data;
}

还要确保你的 pom 文件中有 javax 验证依赖项

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.0.Final</version>
    </dependency>

【讨论】:

  • 这段代码不完整!!!我只是展示如何做你想做的事......
猜你喜欢
  • 2021-04-05
  • 2011-04-12
  • 2017-10-30
  • 2020-05-19
  • 2017-12-20
  • 2021-12-09
  • 2018-06-01
  • 2023-02-21
  • 1970-01-01
相关资源
最近更新 更多