跳至主要内容

Jakarta Validation

在 ChatGPT 中打开

Java Bean Validation 被广泛认可为将验证逻辑集成到 Java 应用程序中的标准。它通过允许开发人员使用声明性验证约束注释域模型属性,利用统一的方法进行验证。这些约束在运行时强制执行,提供内置规则和自定义定义规则的选项。

webforJ 通过 JakartaValidator 适配器无缝集成了 Bean Validation,提供开箱即用的强大支持。

安装

必须在您的类路径中包含兼容的实现,例如 Hibernate Validator。如果您的环境默认没有此实现,可以通过以下 Maven 依赖手动添加:

<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>8.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.glassfish.expressly</groupId>
<artifactId>expressly</artifactId>
<version>5.0.0</version>
</dependency>

JakartaValidator

JakartaValidator 类作为适配器,将 webforJ 绑定上下文与 Jakarta Validation 连接起来。此集成使得可以直接通过 bean 类中的注释使用复杂的验证规则。

激活 JakartaValidator

要在整个上下文中激活 JakartaValidator,通常在构造 BindingContext 时使用 useJakartaValidator 参数。

BindingContext<User> context = new BindingContext<>(User.class, true);

为 bean 属性定义约束

基于注释的约束直接应用于 bean 类,以指定验证条件,如下例所示:

public class Hero {
@NotEmpty(message = "姓名不能为空")
@Length(min = 3, max = 20)
private String name;

@NotEmpty(message = "未指定的能力")
@Pattern(regexp = "Fly|Invisible|LaserVision|Speed|Teleportation", message = "无效的能力")
private String power;

// 获取器和设置器
}

这样的约束与在绑定初始化期间程序设置的约束同样有效,确保一致的验证结果。

警告

目前,JakartaValidator 仅识别直接分配给属性的约束,并忽略与属性不直接相关的任何验证。