真的可能沒有適用於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似乎會失敗。 –