Spring 验证 - NULL 或有效 url

Spring Validation - NULL or valid url

在我的 Spring 引导应用程序中,我有以下方法:

Decision create(@NotBlank String name, String url, @NotNull User author);

现在我直接在代码中检查以下条件:

if (!org.apache.commons.lang3.StringUtils.isEmpty(url) && !urlValidator.isValid(url)) {
    throw new IllegalArgumentException("Decision url is not valid");
}

换句话说 - url 参数可以是 null 或有效的 url.

是否可以用现有的验证注释(例如 JSR-303)替换此代码?

Bean Validation 规范不包含 url 的约束,但一些实现者添加该约束作为 Hibernate Validator 的 @URL 的扩展,但请记住扩展的使用会损害可移植性,以避免这种情况您可以基于正则表达式创建自己的验证器。对于其他部分,您可以将 @NotBlank 用于 url 字符串空控件,您将其用于名称字符串,看起来您在 @NotNull、@NotBlank、NotEmpty 约束之间存在混淆。

看看这个答案:

但无论您选择扩展还是创建自己的验证器 url 字符串的空控件都是多余的。