0

我试图通过跳过尽可能多的数据库命中来优化 Spring 表单验证。这是我拥有的示例验证器:

import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import com.my.Car;

public class CarValidator implements Validator {
    @Override
    public boolean supports(Class<?> c) {
        return c.equals(Car.class);
    }

    @Override
    public void validate(Object car, Errors result) {
        ValidationUtils.rejectIfEmptyOrWhitespace(result, "seats", "NotEmpty.car.seats");
        ValidationUtils.rejectIfEmptyOrWhitespace(result, "colour", "NotEmpty.car.colour");

        // hitting the database here
    }

}

如果前两个验证中的一些验证失败,我不想访问数据库。如果席位或颜色字段为空,则停止处理验证并返回到控制器。但是如果所有的验证都通过了,点击数据库然后做剩下的。就像大多数语言中 AND 的短路评估一样。

4

1 回答 1

0

围绕您的 db 调用检查发现的错误数量:

if (result.getErrorCount() == 0) {
    //do the DB checks
}
于 2013-07-19T13:20:09.343 回答