在 JSF 中验证 class 级 bean 验证约束

Validate class level bean validation constraints in JSF

似乎JSF 2.0 没有调用“类级约束”。引用自 SO answer

JSF 2.0 doesn't call class level validation constraints. From JSF validation: JSF 2 provides built-in integration with JSR-303 constraints. When you are using bean validation in your application, JSF automatically uses the constraints for beans that are referenced by UIInput values.

答案还建议无论如何都要使用 SeamFaces 来验证类级约束。

不幸的是,这不是一个选项,因为它引入了一个有点大的依赖性来验证无论如何应该验证的内容。

因此我的问题是:

如何让 JSF 验证类级约束?

在控制器中手动验证是乏味的并且有很多重复的代码,因此我想避免这个选项。

我试图通过注释要使用 @Valid 验证的 Controller-Field 来做到这一点,但这没有帮助。

猜测 应该可以让“过程验证”阶段为我做这件事,或者在“更新”之后加入类似于 Filter 的东西模型值”阶段,这将通过验证集中运行模型值。

在即将推出的 JSF 2.3 之前,JSF 不支持使用 a.o 的 class 级别验证。 @Valid。这是一个永恒的问题,因为 very first JSF spec issue ever 解决了这个问题。

您的度假村正在使用已经处理好它的第 3 方库,或者根据相关开源库的来源自制它(考虑到许可)。

除此之外 SeamFaces <s:validateForm> which you already found, there's also OmniFaces <o:validateBean>. The major difference as compared to <s:validateForm> is that it doesn't use a JSF Validator, but a JSR303 ConstraintValidator(并且您可以立即获得整个实体,而无需声明和注释一堆字段,重复实体的属性。

JSF 2.3 支持将以 <f:validateWholeBean> 的形式出现,主要基于 OmniFaces <o:validateBean>.