Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • KnowledgePlanet
  • docdoc
  • Issue
  • #5

doc
doc
  • 项目概览

KnowledgePlanet / doc

通知 1303
Star 822
Fork 117
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 42
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 0
  • DevOps
    • 流水线
    • 流水线任务
    • 计划
  • Wiki 2
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
doc
doc
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 42
    • Issue 42
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 0
    • 合并请求 0
  • Pages
  • DevOps
    • DevOps
    • 流水线
    • 流水线任务
    • 计划
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 2
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 流水线任务
  • 提交
  • Issue看板
You need to sign in or sign up before continuing.
已关闭
开放中
Opened 3月 21, 2023 by 小傅哥@Yao__Shun__Yu⛹Owner

通过Spring Validation的注解方式,判断字段是否为空

在 Java 中,可以使用各种框架来处理表单验证,其中比较常见的包括 Spring Validation 和 Hibernate Validator 等。

对于需要依据前置条件来判断是否填写的情况,可以通过编写自定义的校验注解和校验器来实现。具体来说,可以创建一个注解来表示需要满足前置条件才需要进行校验,然后编写对应的校验器来实现具体的校验逻辑。

以下是一个简单的示例代码:

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = RequiredIfValidator.class)
public @interface RequiredIf {

    String message() default "Field is required";

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

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

    String value();

    String[] requiredValues();
}

public class RequiredIfValidator implements ConstraintValidator<RequiredIf, Object> {

    private String field;
    private String[] values;

    @Override
    public void initialize(RequiredIf annotation) {
        this.field = annotation.value();
        this.values = annotation.requiredValues();
    }

    @Override
    public boolean isValid(Object value, ConstraintValidatorContext context) {
        // 获取前置条件的值
        Object fieldValue = BeanUtils.getPropertyValue(value, field);
        // 如果前置条件的值与指定的值匹配,则进行校验
        if (ArrayUtils.contains(values, String.valueOf(fieldValue))) {
            // 校验逻辑
            // 如果校验失败,则返回 false,否则返回 true
        }
        return true;
    }
}

在上述代码中,RequiredIf 注解表示需要满足前置条件才需要进行校验,其中 value 属性表示前置条件的字段名,requiredValues 属性表示前置条件的值列表。RequiredIfValidator 类则实现了具体的校验逻辑,根据前置条件的值是否匹配指定的值列表来决定是否进行校验。

使用时,只需要在需要校验的字段上添加 @RequiredIf 注解即可:

public class MyForm {

    @RequiredIf(value = "field1", requiredValues = {"value1", "value2"})
    private String field2;

    // other fields and methods
}

通过这种方式,可以简化大量的 if-else 逻辑,并且可以方便地扩展和定制校验规则。

指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: KnowledgePlanet/doc#5
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7