1

我正在尝试一个简单的模式验证:

@Min(value = 0, message = "invalid.amount")
@Pattern(regexp = "[0-9]+", message = "invalid.amount")
private double amount;

但它给出了如下错误:

org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.throwExceptionForNullValidator(ConstraintTree.java:229)

但这工作得很好:

@Pattern(regexp = "[\\w|-]{1,5}")
private String data;

似乎正则表达式不适用于数字类型。

4

1 回答 1

0

您假设如果子字符串正则表达式匹配通过,@Pattern 注释将返回 true。如果它不起作用,那么您的假设可能不正确。

@Pattern(regex=,flag=) 字符序列

考虑到给定的标志匹配,检查带注释的字符串是否与正则表达式 regex 匹配。

您可以尝试将 double 更改为 String 并正常使用 @Pattern。

@Pattern(regexp = "[0-9]+", message = "invalid.amount")
private String amount;

其他方式也可能是:

@DecimalMax("10.0") @DecimalMin("0.0") 
private double amount;
于 2016-05-17T13:51:45.890 回答