2011-01-27 90 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