@Size(min,max)但不是必需的

时间:2012-07-18 21:03:54

标签: java spring hibernate-validator

您好,在我的春季网络应用程序中,我有一个密码变量,我想要至少0个字符或者大于6个字符且小于20个字符。我知道有注释:

 @Size(min=6, max=20)

但我不知道如何增加密码可以是0个字符的可能性。有人会帮我这个吗?

4 个答案:

答案 0 :(得分:7)

如果您想要一个空(“”)或长度在6到20个字符之间的字符串,您可以使用@Pattern约束指定正则表达式:

@Pattern(regexp="(^$|.{6,20})")

答案 1 :(得分:6)

鉴于评论,您可以使用StringTrimmerEditor将空字符串转换为空,然后@Size检查不会触发(在@Size中,null被视为有效)。

在您的控制器中添加以下方法:

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}

请注意,StringTrimmerEditor也会修剪空格中的输入,如果您只想让一个属性受此编辑器影响,请使用registerCustomEditor(Class<?> requiredType, String propertyPath, PropertyEditor propertyEditor)

答案 2 :(得分:1)

我认为你想要一个可以为空的字段,但也可以是min = 6max = 20。 AFAIK,@Size只应在字段为非空时激活。

如果您要发送空字符串"",则会对其进行验证。

答案 3 :(得分:1)

至少在Hibernate Validator 5中,您可以使用ConstraintComposition