【发布时间】: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。我正在努力学习如何尽可能正确地编写代码,我希望我能在这个场合学到新的东西。
谢谢,
【问题讨论】:
-
抱歉,有什么问题吗?你认为代码不可读?
-
它是可读的,但我认为可以改进,也许可以用更简单的方式编写。
-
我投票结束这个问题,因为应该在 Code Review 上提问。
标签: java spring-boot validation