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

Mar*_*dek 7 java spring hibernate-validator

嗨在我的春季webapp我有一个密码变量,我想要至少0个字符或超过6个小于20.我知道有一个注释:

 @Size(min=6, max=20)
Run Code Online (Sandbox Code Playgroud)

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

Xae*_*ess 8

给定注释,您可以使用StringTrimmerEditor将空字符串转换为null,然后@Size检查将不会触发(在@Size中null被视为有效).

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

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

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


Gun*_*nar 8

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

@Pattern(regexp="(^$|.{6,20})")
Run Code Online (Sandbox Code Playgroud)