質問
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
重度:java.lang.nosuchmethoderror:javax.persistence.persistence.getpersistenceutil()ljavax/stastence/persistenceutil; atorg.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を持っています
この作業を行うには、他の瓶が必要ですか?
解決
次のようなものを使用して、バリデーターを手動で呼び出すことができます。
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Client client = new Client();
Set<ConstraintViolation<Client>> constraintViolations = validator.validate(client);
他のヒント
ClassPathに別の不完全なJPA 2 JARファイルがある可能性が高いでしょう。残念ながら、この瓶の不完全なバージョンのいくつかは、ある段階でリリースされました(たとえばToplink)。 JPAクラスを含むJARについては、ClassPathを確認してください。参照してください https://forum.hibernate.org/viewtopic.php?f=9&t=999855