为马特+1。NotNull 导入来自错误的包。将其更改为javax.validation.constraints.NotNull
. 此外,只有在类路径中存在 JSr 303 实现时,这才可以开箱即用。从这里
在存在 bean 验证实现的环境中,JSF 自动验证 UIInput 值引用的 bean 的约束。
此外,<f:validateBean>
可用于微调 bean 验证行为。例如,validationGroups 属性可用于手动指定在验证特定组件时应考虑哪些验证组:
<h:inputText value="#{bean.foo}">
<f:validateBean validationGroups="com.foo.validation.groups.Billable"/>
</h:inputText>
当验证约束失败时,任何相关的错误消息都会由 JSF 实现自动转换为 FacesMessages,从而将失败传达给最终用户,而不会给应用程序开发人员带来任何负担。
空字段验证
在以前的 JSF 版本中,验证器未应用于具有 null/空提交值的 EditableValueHolder 组件。不幸的是,这种行为限制了实际检查空/空值的约束的效用,例如 JSR 303@NotNull
约束。为了支持@NotNull
和其他类似的约束,JSF 2 更改了 null/空值验证的行为。从 JSF 2 开始,当存在 JSR-303 实现时,将验证空值/空值。
由于这可能会导致不希望看到空值/空值的旧验证器实现出现问题,javax.faces.VALIDATE_EMPTY_FIELDS
因此可以使用 context 参数来禁用此行为。