加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何使用OR条件验证2字段?

发布时间:2020-12-15 04:26:21 所属栏目:Java 来源:网络整理
导读:我想以一个字段有效或另一个字段有效的方式验证请求类的两个字段. 例如: 请求Bean public class CarRequest { @NotEmpty private String customerName; @NotEmpty private String customerId; 控制器方法 public @ResponseBody CarResponse addCar( @ModelA
我想以一个字段有效或另一个字段有效的方式验证请求类的两个字段.

例如:
请求Bean

public class CarRequest  {
    @NotEmpty
    private String customerName;
    @NotEmpty
    private String customerId;

控制器方法

public @ResponseBody CarResponse addCar(
            @ModelAttribute @Valid CarRequest request,BindingResult results)
            throws RuntimeException,ValidationException {
        if (results.hasErrors()) {
            LOG.error("error occured while adding the car");
            throw new ValidationException(
                    "Error Occoured while validiating car request");
        }
}

在这里,我想检查customerName应该是NotEmpty还是customerId应该是NotEmpty.然后我的验证应该通过.我该如何实现它.请建议!!

解决方法

您需要创建自定义验证程序以验证多个字段.

创建自定义注释:

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.Payload;

@Documented
@Constraint(validatedBy = CarRequestValidator.class)
@Target({ ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface RequestAnnotation {
    String message() default "{RequestAnnotation}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

创建自定义验证器:

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class CarRequestValidator implements 
                ConstraintValidator<RequestAnnotation,CarRequest> {

    @Override
    public void initialize(RequestAnnotation constraintAnnotation) {

    }

    @Override
    public boolean isValid(CarRequest value,ConstraintValidatorContext context) {
        // validation logic goes here
        return false;
    }
}

现在,使用自定义注释注释您的模型:

@RequestAnnotation 
public class CarRequest  {
    private String customerName;
    private String customerId;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读