6c69bede by chentao

no message

1 parent 967fa8ce
package com.lego.common.annotation;
package com.lego.core.annotation;
/**
* @author chentao
* @date 2025/4/23
*/
import com.lego.core.annotation.AtLeastOneNonNullValidator;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
......@@ -15,7 +17,7 @@ import java.lang.annotation.Target;
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface AtLeastOneNonNull {
String message() default "At least one field must be non-null";
String message() default "2D和3D不能都为空";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String[] fields(); // 指定需要校验的字段名数组
......
package com.lego.common.annotation;
package com.lego.core.annotation;
import com.lego.common.utils.StringUtils;
import com.lego.core.domin.bo.CourseBo;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
/**
* @author chentao
* @date 2025/4/23
*/
public class AtLeastOneNonNullValidator implements ConstraintValidator<AtLeastOneNonNull, Object> {
public class AtLeastOneNonNullValidator implements ConstraintValidator<AtLeastOneNonNull, CourseBo> {
private List<String> fields;
@Override
......@@ -22,27 +21,7 @@ public class AtLeastOneNonNullValidator implements ConstraintValidator<AtLeastOn
}
@Override
public boolean isValid(Object object, ConstraintValidatorContext context) {
if (object == null) {
return false; // 如果对象本身为null,则不满足条件
}
for (String fieldName : fields) {
try {
Field field = object.getClass().getDeclaredField(fieldName);
field.setAccessible(true); // 设置私有字段可访问,以便读取值
if (Objects.nonNull(field.get(object))) { // 检查字段是否非空
String value = String.valueOf(field.get(object));
System.out.println(field.getName()+"============"+value+"!");
if(StringUtils.isNotEmpty(value) && !"null".equals(value)) {
System.out.println(field.getName() + "============" + field.get(object) + "&");
return true; // 如果至少一个字段非空,返回true
}
}
} catch (NoSuchFieldException | IllegalAccessException e) {
// 处理异常,例如记录日志等
return false; // 出现异常时,保守起见返回false,实际中应更细致处理异常情况
}
}
return false; // 所有指定字段均为空或出现异常,返回false
public boolean isValid(CourseBo object, ConstraintValidatorContext context) {
return object != null && (StringUtils.isNotBlank(object.getTwoDimensionalOssId()) || StringUtils.isNotBlank(object.getThreeDimensionalOssId()));
}
}
......
package com.lego.core.domin.bo;
import com.lego.common.annotation.AtLeastOneNonNull;
import com.lego.core.annotation.AtLeastOneNonNull;
import lombok.Data;
import javax.validation.constraints.NotBlank;
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!