【问题标题】:Java how to improve the code of the custom validation form in order to be more legibleJava如何改进自定义验证表单的代码以便更易读
【发布时间】:2021-10-17 16:09:04
【问题描述】:

我正在尝试为表单创建验证器。我想检查所有信息是否正确填写。 我有一个表单,用户需要在其中插入已检查的项目。为此,我将在表单上拥有动态数量的行,所有这些都将作为 InspectedItemDto 对象存储在 InspectedItemCreationDto 列表中。不必填写所有行,但是,当用户开始插入有关一项的信息时,他需要填写所有信息直到行尾,以免在属性中存储任何 Null 或 Black 值InspectedItemDto 对象。

我设法得到了一些东西,但它看起来有点乱。

    public boolean isValid(InspectedItemCreationDto values, ConstraintValidatorContext context) {

    for (InspectedItemDto i : values.getInspectedItems()) {
        if (!((Stream.of(i.getItem(), i.getDescription(), i.getSerialLot()).allMatch(String::isBlank) &&
                Stream.of(i.getWoNumber(), i.getTotalPieces(), i.getOkPieces(), i.getNokPieces()).allMatch(Objects::isNull)) ||
                (Stream.of(i.getItem(), i.getDescription(), i.getSerialLot()).noneMatch(String::isBlank) &&
                        Stream.of(i.getWoNumber(), i.getTotalPieces(), i.getOkPieces(), i.getNokPieces()).noneMatch(Objects::isNull)))) {
            return false;
        }
    }
    return true;
}

我在表格中附上了我的图片,也许它会帮助你更好地了解我在做什么:D

我试图找到解决此问题的最佳方法,并且根据我目前的知识,这就是我能得到的全部:D。我正在努力学习如何尽可能正确地编写代码,我希望我能在这个场合学到新的东西。

Form example

谢谢,

【问题讨论】:

  • 抱歉,有什么问题吗?你认为代码不可读?
  • 它是可读的,但我认为可以改进,也许可以用更简单的方式编写。
  • 我投票结束这个问题,因为应该在 Code Review 上提问。

标签: java spring-boot validation


【解决方案1】:

JSR303 很可能是您的最佳选择。您正在根据您的标签使用 Spring。请查看本指南以获取更多信息:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#validation-beanvalidation

如果您想验证项目的最小/最大数量等,您可以注释代表集合项目的类以及根对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多