【问题标题】:SEAM and Hibernate validationSEAM 和休眠验证
【发布时间】:2012-07-25 10:50:56
【问题描述】:

接缝 2,Jboss 6.1

我目前在我的持久性对象上使用 Hibernate 验证注释和 seam 来对我的 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 注释进行验证。

【问题讨论】:

    标签: java jboss6.x seam2


    【解决方案1】:

    无需手动调用休眠验证。在保存时处理错误

        try {
            save();
        } catch (InvalidStateException e) {
            logHibernateValidationException(e);
            ...
    
    private void logHibernateValidationException(InvalidStateException e) {
        for (InvalidValue invalidValue : e.getInvalidValues()) {
            LOGGER.warn("Validation Failed. Instance of bean class: {0} has an invalid property: {1} with message: {2}",
                    invalidValue.getBeanClass().getSimpleName(),
                    invalidValue.getPropertyName(),
                    invalidValue.getMessage());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 2012-11-19
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多