jsr 303的可选数据

时间:2013-07-30 10:32:09

标签: java validation

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

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

我已经安排了我的注释

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

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

请有人帮帮忙吗?提前致谢

1 个答案:

答案 0 :(得分:2)

第16页的

JSR-303 spec个州

  

虽然不是强制性的,但将核心约束验证与not分开是一种很好的做法   null约束验证(例如,@Email约束将在null对象上返回true,即不会   负责@NotNull验证)

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

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