调用 bean 验证

yod*_*uhe 2 hibernate-validator jsf-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
}
Run Code Online (Sandbox Code Playgroud)

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

...
try{
  Client cl=new Client();
  cl.setEmail("from_csv_data");
}catch( //validation failed
Run Code Online (Sandbox Code Playgroud)

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



设置>constraintViolations = validator.validate(nc);
抛出这个异常

SEVERE: Received 'java.lang.NoSuchMethodError' when invoking action listener '#{clientBean.bulkUpload}' for component 'j_idt86'
Run Code Online (Sandbox Code Playgroud)

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 来完成这项工作吗?

Bri*_*hem 5

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

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

Validator validator = factory.getValidator();

Client client = new Client();

Set<ConstraintViolation<Client>> constraintViolations = validator.validate(client);
Run Code Online (Sandbox Code Playgroud)