我会在我的 OSGi 中使用 HibernateValidator 验证我的 anootated pojos (JSR 303)。 单元测试工作正常,但在 OSGi 上它不起作用。
这是我的 validator 方法:
public static void validate(Object o) throws ValidationException {
ValidatorFactory factory = Validation.byDefaultProvider().providerResolver(new OSGiServiceDiscoverer()).configure()
.buildValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Object>> validatorResult = null;
if (o instanceof MessageContentsList) {
MessageContentsList messageList = (MessageContentsList) o;
validatorResult = validator.validate(messageList.get(0));
} else {
validatorResult = validator.validate(o);
}
if (!validatorResult.isEmpty()) {
StringBuffer sb = new StringBuffer();
for (ConstraintViolation<Object> v : validatorResult) {
sb.append(v.getPropertyPath() + " " + v.getMessage() + ", ");
}
String msg = sb.toString().substring(0, sb.toString().length() - 1);
throw new ValidationException(msg);
}
}
这里是发现者:
public class OSGiServiceDiscoverer implements ValidationProviderResolver {
@Override
public List<ValidationProvider<?>> getValidationProviders() {
List<ValidationProvider<?>> providers = new ArrayList<ValidationProvider<?>>(1);
providers.add(new HibernateValidator());
return providers;
}
}
在 pom 中,我为 OSGi 添加了以下导入:
javax.validation,
javax.validation.bootstrap,
javax.validation.constraints,
javax.validation.spi,
org.hibernate.validator,
有人知道我做错了什么吗?
谢谢
最佳答案
我终于自己找到了解决方案。 原因是,带注释的类与验证类在一个单独的包中,并且我没有添加 javax.validation 依赖项。所以注释被忽略了,验证没有功能
关于java - 在 OSGi 中验证 Pojo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26716110/