真的可能没有适用于Android的JSR-303兼容验证程序吗?适用于Android的JSR-303兼容bean验证程序
Hibernate验证器似乎与Android(ClassNotFound Exception)不兼容,然后...我找不到任何其他东西。
我发现Metawidget - 但在他们的网站上,他们说“Metawidget附带了一个原生于您现有前端的UI组件” - 我不需要额外的UI组件。
以下是我对后端:
final String wrongJson = "{\"name\":\"notavalidemail\"}";
final Gson gson = new Gson();
final Project projectFromJson = gson.fromJson(wrongJson, Project.class);
final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
final Validator validator = factory.getValidator();
final Set<ConstraintViolation<Project>> constraintViolations = validator.validate(projectFromJson);
assertNotNull(constraintViolations);
for (final ConstraintViolation<Project> violation : constraintViolations) {
logger.debug("Errormessage: {}",violation.getMessage());
}
为了避免一堆IFS的我想在Android上是相同的 - 任何提示?
[更新] 对不起 - 这不是ClassNotFound的是
javax.validation.ValidationException:无法创建一个配置,因为没有Bean验证提供者可能被发现。将像Hibernate Validator(RI)这样的提供程序添加到您的类路径中。 在javax.validation.Validation $ GenericBootstrapImpl.configure(Validation.java:271) 在javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:110) 在at.mikemitterer.mobiad.android.util.ProjectTest.testWithWrongJsonString( ProjectTest.java:90) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java :175) 在android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) 在android.app.Instrumentation $ InstrumentationThread.run(Instrumentation.java:1661)
更新II] 是 - 休眠 - 验证 - 5.1.0.Alpha1.jar是在我的lib文件夹
我刚刚更新了我的问题... –
我不是但是根据[this](http://stackoverflow.com/questions/5760607/using-serviceloader-on-android),这个环境中的ServiceLoader存在问题(BV用来加载提供者) 。你可以尝试明确指定你的提供者,如下所示:'Validation.byProvider(HibernateValidator.class).configure()。buidValidatorFactory()'; – Gunnar
我在几分钟之前试过这个 - 同样的结果。我也用ApacheValidationProvider尝试过,它也一样。我认为这是一个更普遍的问题。如果它应该在运行时加载这些Validator类,Android似乎会失败。 –