2

我正在使用 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
严重:java.lang.NoSuchMethodError:javax.persistence.Persistence.getPersistenceUtil()Ljavax/persistence/PersistenceUtil;在 org.hibernate.validator.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:62)

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

4

2 回答 2

5

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

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

Validator validator = factory.getValidator();

Client client = new Client();

Set<ConstraintViolation<Client>> constraintViolations = validator.validate(client);
于 2011-01-28T00:20:10.860 回答
1

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

于 2011-01-28T18:06:22.210 回答