嗨,在我的 spring webapp 中,我有一个密码变量,我希望它至少为 0 个字符或大于 6 且小于 20。我知道有注释:
@Size(min=6, max=20)
但我不知道如何增加密码可以是 0 个字符的可能性。有人会帮我解决这个问题吗?
嗨,在我的 spring webapp 中,我有一个密码变量,我希望它至少为 0 个字符或大于 6 且小于 20。我知道有注释:
@Size(min=6, max=20)
但我不知道如何增加密码可以是 0 个字符的可能性。有人会帮我解决这个问题吗?
给定注释,您可以使用StringTrimmerEditor
将空字符串转换为null,然后@Size
不会触发检查(null在@Size中被认为是有效的)。
在您的控制器中添加以下方法:
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}
请注意,它StringTrimmerEditor
还会修剪来自空格的输入,如果您只希望一个属性受此编辑器的影响,请使用registerCustomEditor(Class<?> requiredType, String propertyPath, PropertyEditor propertyEditor)
.
如果您想要一个为空 ("") 或长度介于 6 到 20 个字符之间的字符串,则可以使用@Pattern
约束指定正则表达式:
@Pattern(regexp="(^$|.{6,20})")
我认为您想要一个可为空的字段,但这也可以是min = 6
and max = 20
。AFAIK,@Size
仅当字段为非空时才应激活。
如果您发送一个空字符串""
,它将被验证。
您可以使用ConstraintComposition,至少在 Hibernate Validator 5 中。