Java数字验证

时间:2013-03-26 20:10:18

标签: java spring validation model-view-controller

我在int属性中使用验证:

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

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

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

2 个答案:

答案 0 :(得分:7)

由于您需要6位数字,我认为您应该使用字符串属性。如果在某些情况下你需要它作为int,你可以做一个

 public int getIdOrder(){ return Integer.parseInt(idOrder);}

在String上,您可以使用模式验证。这将是这样的事情:

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

另一个选择是将idOrder保持为int并为字符串创建一个getter:

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

无论如何,有一些选择。

答案 1 :(得分:2)

您确定您的验证工作正常吗?

Hibernate文档说:

  

检查属性是否为最多整数位数和小数位数的数字。 1

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