2013-03-26 32 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