Вызвать проверку бина

Я использую 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

Как мне повторно использовать один и тот же валидатор здесь?



Set> limitedViolations = validator.validate(nc);
выдает это исключение

SEVERE: Received 'java.lang.NoSuchMethodError' when invoking action listener '#{clientBean.bulkUpload}' for component 'j_idt86'

28 января 2011 г., 8:35:39. в 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 для этой работы?


person yodhevauhe    schedule 27.01.2011    source источник


Ответы (2)


Вы можете вызвать валидатор вручную, например:

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

Validator validator = factory.getValidator();

Client client = new Client();

Set<ConstraintViolation<Client>> constraintViolations = validator.validate(client);
person Brian Leathem    schedule 28.01.2011

Скорее всего, у вас есть еще один неполный файл jar JPA 2 в пути к классам. К сожалению, на каком-то этапе были выпущены некоторые неполные версии этой банки (например, TopLink). Проверьте свой путь к классам на наличие любого jar-файла, содержащего классы JPA. См. также https://forum.hibernate.org/viewtopic.php?f=9&t=999855

person Hardy    schedule 28.01.2011
comment
Спасибо, я удалил hibernate-jpa-2.0-api-1.0.0.Final.jar, и теперь он работает/проверяется - person yodhevauhe; 29.01.2011