【问题标题】:Invoke bean validation调用 bean 验证
【发布时间】:2011-01-27 15:36:56
【问题描述】:

我正在使用 JSF 2,myfaces,hibernate-validator-4.1.0.Final.jar。

我使用 hibernate-validator 来验证表单中输入的值。

public class Client {
   @Persistent
   @Pattern(regexp = "|.+@.+\\.[a-z]+", message = "Email format is invalid.")
   private String email;
   //getter
}

我正在开发批量上传模块,我在其中解析 csv 数据并创建数据库记录。

...
try{
  Client cl=new Client();
  cl.setEmail("from_csv_data");
}catch( //validation failed

我如何在这里重用相同的验证器?



Set> constraintViolations = validator.validate(nc);
抛出此异常
SEVERE: Received 'java.lang.NoSuchMethodError' when invoking action listener '#{clientBean.bulkUpload}' for component 'j_idt86'

2011 年 1 月 28 日上午 8:35:39 javax.faces.event.MethodExpressionActionListener processAction
严重:java.lang.NoSuchMethodError:javax.persistence.Persistence.getPersistenceUtil()Ljavax/persistence/PersistenceUtil; 在 org.hibernate.validator.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:62)

我试过这个解决方案link
我有 hibernate-jpa-2.0-api-1.0.0.Final.jar,hibernate-validator-4.1.0.Final.jar
我需要任何其他 jar 来完成这项工作吗?

【问题讨论】:

    标签: jsf-2 hibernate-validator


    【解决方案1】:

    您可以通过以下方式手动调用验证器:

    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    
    Validator validator = factory.getValidator();
    
    Client client = new Client();
    
    Set<ConstraintViolation<Client>> constraintViolations = validator.validate(client);
    

    【讨论】:

      【解决方案2】:

      您很可能在类路径上有另一个不完整的 JPA 2 jar 文件。不幸的是,这个 jar 的一些不完整版本是在某个阶段发布的(例如 TopLink)。检查您的类路径中是否有任何包含 JPA 类的 jar。另见https://forum.hibernate.org/viewtopic.php?f=9&t=999855

      【讨论】:

      • 谢谢,我删除了 hibernate-jpa-2.0-api-1.0.0.Final.jar 和现在它的工作/验证
      猜你喜欢
      • 2013-06-05
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 2019-02-04
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多