2013-07-30 73 views
1

得到一个在这里我一直在思考一整天。可选数据与jsr 303

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

我已经安排我的注释从而

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

问题是,当该值为null或空它仍然验证失败!与“错误的格式”

任何人都可以在这里帮忙吗?页面上预先感谢

+0

你可以显示'VALID_FLOAT'模式吗? – mthmulders

+0

顺便说一下,JSR 303规范说'null'元素被认为是有效的...... – mthmulders

+0

@mthmulders模式是一种无关紧要的问题,问题是如果字符串为空或为空,如何停止验证尝试。如果你是在一个有效的浮动模式之后,我可以让你有它,虽然 – Beer0

回答

2

JSR-303 spec州16

虽然不是强制性的,它被认为是一个很好的做法,从没有 空约束验证分裂核心约束验证(例如,@Email约束将返回空物体真实的,即不会 照顾@NotNull验证)

所以@Pattern应该是有效的字符串的空值。然后你的VALID_FLOAT模式应该处理空字符串,或者你需要明确声明如​​。

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

+0

谢谢你,在你的回复和mthmulders的回复之后,所有这些都变得更加清晰。 – Beer0