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

ここで同じバリデータを再利用するにはどうすればよいですか?



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 AM javax.faces.event.MethodExpressionActionListener processAction
SEVERE: java.lang.NoSuchMethodError: javax.persistence.Persistence.getPersistenceUtil()Ljavax/persistence/PersistenceUtil; org.hibernate.validator.engine.resolver.JPATraversableResolver.isReachable (JPATraversableResolver.java:62) で

このソリューションリンク
を試してみ
ました。

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 に答える