1

有一个在这里我一直在思考一天左右。

我有一个常规的 Java Bean,它上面是一个可以合法地为 null 或空的 String 属性,但是如果它不是 null 或空的,那么我有一个正则表达式来验证它是一个有效的浮点数。

我已经安排了我的注释

@Pattern(regexp = VALID_FLOAT, message = "Incorrect format")
private String elevation;

问题是,当值为 null 或为空时,它仍然无法验证!带有“格式不正确”

任何人都可以在这里帮忙吗?提前致谢

4

1 回答 1

2

第 16 页的 JSR-303 规范状态

虽然不是强制性的,但将核心约束验证与非空约束验证分开被认为是一种很好的做法(例如,@Email约束将在空对象上返回 true,即不会处理@NotNull验证)

所以@Pattern应该对字符串的空值有效。然后您的VALID_FLOAT模式应该处理空字符串,或者您需要明确声明 like EMPTY+"|"+VALID_FLOAT

但是我认为 null 和空 String 的歧义不是一个好习惯。你应该决定一个。

于 2013-07-30T10:39:58.383 回答