Jakarta Validation
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
仅识别直接分配给属性的约束,并忽略与属性不直接相关的任何验证。