Spring 验证 - NULL 或有效的 url

ale*_*oid 5 java validation spring jsr bean-validation

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

Decision create(@NotBlank String name, String url, @NotNull User author);
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Ebu*_*NAT 3

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

看看这个答案:/sf/answers/1199611591/

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