gpt4 book ai didi

java - Bean 验证 - 在出现第一个错误时停止验证

转载 作者:行者123 更新时间:2023-12-02 09:44:52 26 4
gpt4 key购买 nike

我想知道当一个 validator 失败时是否可以停止其他 validator 的执行?

我有一些bean,注释如下

import org.hibernate.validator.constraints.*;

/*...*/

@NotBlank(message = SignupForm.NOT_BLANK_MESSAGE)
@Email(message = SignupForm.EMAIL_MESSAGE)
private String email;

@NotBlank(message = SignupForm.NOT_BLANK_MESSAGE)
@Length(min = 6, message = SignupForm.PASSWORD_LENGTH_TOO_SHORT_MESSAGE)
private String password;

这是我的 JSP

<form:label path="email"><s:message code="email" /></form:label>
<form:errors path="email" element="div" class="text-error"/>
<form:input path="email" class="input-block-level" placeholder="Email address" />

<form:label path="email2"><s:message code="repeat_email" /></form:label>
<form:errors path="email2" element="div" class="text-error"/>
<form:input path="email2" class="input-block-level" placeholder="Email address" />

<form:label path="password"><s:message code="password" /></form:label>
<form:errors path="password" element="div" class="text-error"/>
<form:password path="password" class="input-block-level" placeholder="Password" />

<form:label path="password2"><s:message code="repeat_password" /> </form:label>
<form:errors path="password2" element="div" class="text-error"/>
<form:password path="password2" class="input-block-level" placeholder="Password" />

现在 - 在我的页面上,当我尝试提交空表单时,我得到

E-mail
The value may not be empty!

Password
Password must be at least 6 characters long
The value may not be empty!

对于 password 字段,我从两个 validator 中收到错误 - 这是非常不可取的。对于 email 字段,我知道空字符串是有效的电子邮件地址(?!),这就是为什么我一次只收到一条消息。

那么是否可以按指定的顺序运行验证并在第一次失败后停止处理或仅获取第一条消息?

最佳答案

出于文档目的,这实际上适用于那些尝试使用 validator API 手动验证其 Bean 并喜欢在第一次失败时停止的人,无论为该特定字段定义了多少个验证(并且可能会失败)。

按照 Hardy 提到的,当将组分配给每个验证并定义 @GroupSequence 时,在验证时,验证会在第一个失败的组处停止。

这是验证分组的一个很好的例子 https://www.baeldung.com/javax-validation-groups

  • 只需确保将 Bean 的类本身包含为 @GroupSequence 中的最后一个组

关于java - Bean 验证 - 在出现第一个错误时停止验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15397931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com