调用bean验证

时间:2011-01-27 15:36:57

标签: jsf-2 hibernate-validator

我正在使用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

如何在此处重复使用相同的验证器?



    集> 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
    SEVERE: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
我还需要其他罐子吗?

2 个答案:

答案 0 :(得分:4)

您可以使用以下内容手动调用验证器:

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

Validator validator = factory.getValidator();

Client client = new Client();

Set<ConstraintViolation<Client>> constraintViolations = validator.validate(client);

答案 1 :(得分:1)

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