10

嗨,在我的 spring webapp 中,我有一个密码变量,我希望它至少为 0 个字符或大于 6 且小于 20。我知道有注释:

 @Size(min=6, max=20)

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

4

4 回答 4

10

给定注释,您可以使用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).

于 2012-07-19T07:44:15.050 回答
9

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

@Pattern(regexp="(^$|.{6,20})")
于 2012-07-19T20:53:49.357 回答
2

我认为您想要一个可为空的字段,但这也可以是min = 6and max = 20。AFAIK,@Size仅当字段为非空时才应激活。

如果您发送一个空字符串"",它将被验证。

于 2012-07-18T21:08:33.213 回答
1

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

于 2012-07-19T09:10:53.090 回答