2012-05-17 157 views
5

我有一个实体,称为用户,我想验证一个移动号码字段使用Hibernate注释

的手机号码字段是不是强制性的,可以留空,但它应该是一个10位数字验证手机号码。

如果用户输入任何值长度小于10位数字然后应该抛出一个错误。

下面是我的用户类。

​​

当我如上所述使用@Sized注释,我可以验证均大于10,但如果用户输入小于10位升至不误差值。

我的要求是,如果用户将mobileNo字段留空是有效的,但如果输入了值,那么验证应该确保输入的号码只有10位数和10位数。

我应该使用哪个注释来满足这个要求?

回答

17

@Size(min=10,max=10)会做这项工作,如果通过空白,你的意思是空。

如果你不把@NotNull注释,null值会通过验证。

如果您的空白意味着空字符串,那么你需要使用@Pattern验证:

@Pattern(regexp="(^$|[0-9]{10})") 

这要么是空字符串或10位数字相匹配。

+0

但是,因为大多数MVC框架将空白字符串绑定到字段时,相应的文本框留空白,这可能不会真正解决问题。我通过编写自己的验证注释解决了一个非常类似的问题。你可以考虑的另一件事是使用@Pattern和正则表达式来验证该字段。 –

+0

我们如何检查电话号码之间是否没有连字符?例如:012-345-6789,这些值应该被验证 – 2015-10-05 15:41:18

3

也许你可以使用谷歌代码中的libphonenumber改善建议的响应,以验证你的phonenumbers。

+0

这看起来像一个伟大的库。将检查出来验证和转换数字。 – djmj

+0

是的!当然可以! – ThierryB