2013-03-26 33 views
0

我使用验证的INT属性:的Java位数验证

@Digits(integer=6,fraction=0) 
private Integer idOrder; 

但我希望这个属性恰好有6位数字。

我该怎么做? (使用JSP + Spring + Hibernate)

+0

有什么不是关于这方面的工作? – 2013-03-26 20:25:21

+0

我希望这个属性有6位数字,如:000000,020123,123452. – 2013-03-26 20:35:44

+0

你可以举一个整数的例子,不应该允许你的问题中的代码被允许吗? – 2013-03-26 20:46:23

回答

3

由于您需要6位数字,我认为您应该使用字符串的属性。如果在某些情况下需要将它作为int,则可以使用模式验证。在字符串中,您可以使用模式验证。这将是somethind这样的:

@Pattern(regexp="\\d{6}") 
private String idOrder; 

另一种选择,就是保持一个idOrder INT,并为字符串一个getter:

public String getIdOrgetAsString(){ 
    String s = "000000" + idOrder; 
    return s.substring(s.length() - 6); 
} 

无论如何,有一些选项。

2

您确定您的验证是否可用?

Hibernate文档说:属性

检查是否具有多达位整数和分数小数位的数字。 1

什么意思是正好6位数字?是否支持前导零?或者应该在100.000和999.999之间。在第一种情况下,我猜你的数字应该是一个字符串(带有@Length),在第二种情况下,我想你应该使用@Min和@Max。

+0

它不工作。 准确的6位数字我的意思是6个数字,如:000000,020123,123452,... – 2013-03-26 20:34:06

+0

在这种情况下,使用带@Length的字符串应该有效。如果没有,我想你的验证根本不起作用。或者一个字符串不适合你的用例?那么,为什么不呢? – 2013-03-26 20:39:05

+0

我必须使用int或Integer。 @Lenght只适用于Strings。 – 2013-03-26 20:41:05