gpt4 book ai didi

operator-precedence - 控制验证注释顺序?

转载 作者:IT老高 更新时间:2023-10-28 13:54:53 28 4
gpt4 key购买 nike

一个字段有两个验证注解

@NotEmpty
@Length(min=3,max=100)
String firstName;

观察

如果该字段为空,则结果违规的顺序会有所不同:

  • 有时首先违反 @NotEmpty
  • 其他时候首先违反 @Length

问题

Hibernate 如何指定处理验证(注释)的顺序?可以自定义此验证顺序吗?

提前致谢。

最佳答案

使用 JSR-303 验证组。

如果未指定组,则约束是默认 Bean 验证组的一部分(请参阅:javax.validation.groups.Default)。

创建一个接口(interface)作为您的“扩展”(或任何您想称呼的)组:

public interface Extended{}

现在创建一个带有 javax.validation.GroupSequence 注释的接口(interface)。

@GroupSequence({Default.class, Extended.class})
public interface MySequence {}

为您的约束设置验证组

@NotEmpty // If no group is specified it is part of the default group
@Length(min=3,max=100, groups = Extended.class)
String firstName;

将 MySequence 传递给您的验证器调用。

validator.validate(object, MySequence.class);

按照您的 @GroupSequence 的规定,将首先验证默认约束,如果没有遇到任何违反约束的情况,它将转到扩展组。

关于operator-precedence - 控制验证注释顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5571231/

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