真的有可能没有适用于 Android 的 JSR-303 兼容验证器吗?
Hibernate 验证器似乎与 Android 不兼容(ClassNotFound 异常)然后......我找不到其他任何东西。
我找到了 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) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) 在 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) 在 android。 test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)
[更新 II ] 是的 - hibernate-validator-5.1.0.Alpha1.jar 在我的 lib 文件夹中