2012-08-22 75 views
1

我添加了一些注释(bean验证)如下,但它们不起作用。注解(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; 

我的字段不被验证。它会是什么?

谢谢!

回答

1
  1. 你可能有@NotNull错误的进口(应该是在javax.validation.constraints包)。如果值为null,则其他注释无关紧要。而且,由于您的注释错误,因此double将被允许为null,但double除外,顺便说一句,@NotNull无用,因为double始终有一个值。

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

你在什么时候期待验证发生?如果这是一个jsf托管bean,它很可能会在设置值阶段结束时进行验证。

如果它不是由JSF管理的,则必须通过API验证自己。

+0

马特,我纠正了导入,但仍然没有工作。 (import javax.validation.constraints.NotNull;) – Deb

+0

是使用来自javax.validation.constraints的注释。我觉得它是内置的,但需要将单独的jar(或通过构建工具)文件添加到项目中。 – Dexter

0

+1对于马特。 NotNull导入来自错误的包。将其更改为javax.validation.constraints.NotNull。此外,如果JSR 303实现存在于类路径中,则这只能用于开箱即用。从here

在存在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,校验并没有应用到与空/空提交值EditableValueHolder的组件。不幸的是,这种行为限制了实际检查空/空值的约束的效用,例如JSR 303约束。为了支持@NotNull和其他类似的约束,JSF 2更改了空/空值验证的行为。从JSF 2开始,当存在JSR-303实现时,会验证null/empty值。

由于这可能会导致遗留的Validator实现出现问题,而这些实现不希望看到空值/空值,因此可以使用javax.faces.VALIDATE_EMPTY_FIELDS上下文参数来禁用此行为。

+0

Pangea库已更改,但没有任何反应,不验证空字段,也不验证值为最小值和最大值的字段。就好像他没有注释。 – Deb

-1

尝试卸载最新的Android SDK构建工具。 转到Android SDK管理器 - >卸载Android SDK构建工具。