1

我添加了一些注释(bean 验证),如下所示,但它们不起作用。

@NotNull
@Min(value=3)
private double salario;

@NotNull
@Min(value=5)
@Max(value=19)

private Integer codigo; 
@NotNull
private Date aniversario;

我导入了库:

com.sun.istack.internal.NotNull import;
javax.validation.constraints.Max import;
javax.validation.constraints.Min import;

我的字段没有被验证。会是什么?

谢谢!

4

3 回答 3

1
  1. 你可能有错误的导入@NotNull(它应该在javax.validation.constraints包中)。如果值是 ,则其他注释无关紧要null。并且由于您的此注释错误,因此它们将被允许null除了 ,double顺便说一句, the@NotNull是无用的,因为double它始终具有价值。

  2. 您确定您的应用程序中包含验证库吗?我不确定 jsf(无论您使用哪种 impl)是否带有一个。

您希望在什么时候进行验证?如果这是一个 jsf 托管 bean,它很可能会在设置值阶段结束时得到验证。

如果它不是 JSF 管理的,那么您很可能必须通过 API 验证自己。

于 2012-08-22T17:14:58.427 回答
0

为马特+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 参数来禁用此行为。

于 2012-08-22T17:54:07.340 回答
-1

尝试卸载最新的 Android SDK Build-tool。转到 Android SDK 管理器 -> 卸载 Android SDK Build-tool。

于 2014-06-02T11:03:41.743 回答