如何在使用带有javax库的Float字段时使用@Size验证?

时间:2014-06-21 17:28:22

标签: java validation hibernate-validator

我正在尝试使用Float数据类型的最大大小验证和javax验证。这是例子

@NotNull
@Size(min = 5, max = 10)
public Float getPhone(){

}

但我收到的错误是我无法使用Float数据类型进行大小验证。任何想法?

1 个答案:

答案 0 :(得分:3)

@Size不适用于Float类型。引用约束的javadoc:

/**
 * The annotated element size must be between the specified boundaries (included).
 * <p/>
 * Supported types are:
 * <ul>
 *     <li>{@code CharSequence} (length of character sequence is evaluated)</li>
 *     <li>{@code Collection} (collection size is evaluated)</li>
 *     <li>{@code Map} (map size is evaluated)</li>
 *     <li>Array (array length is evaluated)</li>
 * </ul>
 * <p/>
 * {@code null} elements are considered valid.
 *
 */ 

所以这个约束实际上是关于字符串或集合的大小。您可以为float编写自己的验证器并通过xml注册 - 请参阅http://beanvalidation.org/1.1/spec/#xml-mapping-constraintdefinition

但是,我建议不要这样做,因为在您想要使用它的上下文中谈论“大小”是没有意义的。

您可以使用@Min@Max,但由于存在舍入问题,并非所有提供程序都支持float数据类型。

看看你的例子,似乎你想存储一个电话号码。为什么你会选择一个浮动开始?