首页 > 其他 > 详细

Validate至少有一个不能为空

时间:2021-08-11 23:44:47      阅读:28      评论:0      收藏:0      [点我收藏+]

自定义过滤标签

import org.apache.commons.beanutils.PropertyUtils;

import javax.validation.Constraint;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 验证至少有一个不能为空
 *
 * @author admin
 */
@Target({TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = AtLeastOneNotNull.AtLeastOneNotNullValidator.class)
@Documented
public @interface AtLeastOneNotNull {

    String message() default "at least one not null";

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

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

    String[] fieldNames();

    class AtLeastOneNotNullValidator implements ConstraintValidator<AtLeastOneNotNull, Object> {

        private String[] fieldNames;

        @Override
        public void initialize(AtLeastOneNotNull constraintAnnotation) {
            this.fieldNames = constraintAnnotation.fieldNames();
        }

        @Override
        public boolean isValid(Object object, ConstraintValidatorContext constraintContext) {

            if (object == null) {
                return true;
            }
            try {
                for (String fieldName : fieldNames) {
                    Object property = PropertyUtils.getProperty(object, fieldName);

                    if (property != null) return true;
                }
                return false;
            } catch (Exception e) {
                return false;
            }
        }
    }
}

应用

@Data
@ToString(callSuper = true)
@AtLeastOneNotNull(fieldNames = {"telphone", "phone"}, message = "telphone,phone不能都为空")
public class User {
    private String name;

    /**
     * 电话号码
     */
    private String telphone;

    /**
     * 手机号码
     */
    private String phone;
}

Validate至少有一个不能为空

原文:https://www.cnblogs.com/itplay/p/15129951.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!