验证bean的多个字段时出现java错误消息问题
当我将电子邮件设置为空字符串(“”)时,我使用组序列来防止在电子邮件字段中同时显示两条错误消息。如果我不使用组序列,它将同时显示“需要电子邮件”和“电子邮件格式错误”
然后,在使用组序列之后,我遇到了另一个问题。我在amount字段上设置了一个空字符串(“”),并设置了krchoigmail。电子邮件字段中的com。由于组顺序的原因,它仅显示“需要金额”错误消息。我需要显示“电子邮件格式错误。”还有错误消息。我如何做到这一点?我搜索了很多次,但没有找到这个问题的答案。请帮忙
@NotBlank(message = "{error.req.integer.amount}")
public String getAmount() {
return amount;
}
@NotBlank(message = "{error.req.email}")
@Email(message = "{error.format.email}", groups = ValidInput.class)
public String getEmail() {
return email;
}
# 1 楼答案
马库斯:谢谢你回复我。我必须使用这个答案字段,因为我没有50%的声誉来写评论。事实上,@NotNull并没有触发@Email。我通过编写自定义验证解决了我的问题,但我更喜欢您的答案而不是自定义验证。你能给我一些关于为什么@NotBlank触发@Email而@NotNull不触发的细节吗?似乎这种行为使@NotBlank变得不那么有用。我采纳了你的建议,效果很好。我不需要一群人。多谢各位
# 2 楼答案
@NotBlank
和@Email
都将“”作为无效值共享。您可以考虑添加某种转换服务,将“”转换为null,并用^ {CD4}}替换^ {< CD1> }约束。Null不触发@Email
,但仅触发@NotNull
。在这种情况下,不需要组关于第二个问题,组
javax.validation.groups.Default
中的每个默认值都有一个约束。在组ValidInput.class
中显式设置@Email
约束