java - Double 类型的 Hibernate @Digits 验证

标签 java hibernate-validator javax

我正在尝试验证 Double借助 Hibernate 验证 API 的字段 - 使用 @Digits注释

<areaLength>0</areaLength>
<buildArea>0.0</buildArea>

@Digits(integer=10, fraction=0)
private Long areaLength = null; // Here areaLength = 0 

@Digits(integer=20, fraction=0)
private Double buildArea = null; // Here buildArea = 0.0

在这里areaLength没有违反约束,

但是buildArea正在违反约束,说

buildArea numeric value out of bounds (<20 digits>.<0 digits> expected)

10.0 无违规,但 0.0 违规。

有人知道原因吗?

完整代码:

public class ValidationTest {

    public static void main(String a[]) {
        Vehicle vehBean = new Vehicle();
        try {
            if (vehBean != null) {
                ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
                Validator validator = factory.getValidator();
                Set<ConstraintViolation<Vehicle>> violations = validator.validate(vehBean);
                if (violations!= null && violations.size() > 0) {
                    for (ConstraintViolation<Vehicle> violation : violations) {
                        System.out.println("Validation problem : " + violation.getMessage());
                    }
                }
            }
        } catch(Exception e) {
            throw e;
        }
    }
}

class Vehicle {
    @Digits(integer=20, fraction=0)
    private Double buildArea = 0.0; 
}

验证问题:数值超出范围(预期<20 位>。<0 位>)

最佳答案

或者,你也可以试试;

@DecimalMin("0.00") 
@DecimalMax("99999999999999999.00") 

关于java - Double 类型的 Hibernate @Digits 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42787028/

相关文章:

java - 在 Spring 中使用验证将 ZonedDateTime 字段限制为毫秒时间的 3 位数字

java - Hibernate validator 问题跟踪

java - 验证可选字段

java - 从 java 程序运行时,任务栏中的 exe 内存大小不会增加太多

java - "Exception in thread "主要 "java.util.InputMismatchException"**

Java类继承/接口(interface)实现原理

spring - 使用 Hibernate Validator 验证 double 和 float 值 - bean 验证

java - 编写一个读取二进制文件的方法

bean-validation - javax 验证 OneOf 约束

java - 如何删除无效的 XML 元素