我将使用OSGi中的HibernateValidator验证经过修饰的pojos(JSR 303)。
单元测试工作正常,但在OSGi上不起作用。

这是我的验证器方法:

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/

10-08 21:49
查看更多