接缝 2,Jboss 6.1
我目前在我的持久性对象上使用 Hibernate 验证注释,并在我的 jsf 页面上进行验证:
@Entity
@Table(name = "CLIENT", catalog = "testdb")
public class Client implements java.io.Serializable {
private Integer id;
private String name;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "ID", unique = true, nullable = false)
public Integer getId() {
return this.id;
}
@Column(name = "NAME", unique = true, nullable = false, length = 64)
@org.hibernate.validator.Length(min=4,max=64)
public String getName() {
return this.name;
}
...Setters and rest
}
这非常有效,当名称字段长度小于 4 个字符时,会显示一个很好的错误。
问题是用户在其他渠道提交数据,即电子表格导入、3de 方应用程序等。因此我必须在我的 java 代码中进行如下验证:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<K>> constraintViolations = validator.validate(bean);
现在这不会发现任何验证错误,但是持久化数据确实会引发异常,因此它确实可以在某个地方工作。我可以通过使用 @org.hibernate.validator.constraints.Length 让它工作,但是 jsf 屏幕不会报告约束问题。
在我看来,@org.hibernate.validator.Length 是一个旧的 Hibernate Validator 库,但它与接缝 2 非常纠缠,因此无法删除。
任何人都知道如何在 java 代码中使用遗留的 hibernate 注释进行验证。