2011-01-27 91 views
1

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

我使用hibernate-validator验证在窗体中输入的值。

public class Client { 
    @Persistent 
    @Pattern(regexp = "|[email protected]+\\.[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 /持久/ 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来做这个工作吗?

回答

4

你可以像手动调用验证:

ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 

Validator validator = factory.getValidator(); 

Client client = new Client(); 

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

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

+0

谢谢,我删除了hibernate-jpa-2.0-api-1.0.0.Final.jar,现在它的工作/验证 – yodhevauhe 2011-01-29 09:20:01