首页 > 解决方案 > 为什么 HIbernate 的 PESEL 验证器不起作用?

问题描述

文档:https ://docs.jboss.org/hibernate/validator/5.4/api/org/hibernate/validator/internal/constraintvalidators/hv/pl/PESELValidator.html

@Test
    public void testEncryptingPesel() {
        // given
        CharSequence validPesel = "94092367705";


        // when
        PESELValidator validator = new PESELValidator();

        // then
        assertTrue(validator.isValid(validPesel, null));
}

测试失败。PESEL 100% 正确,您可以在这里查看: https ://sprawdz-numer.com/pesel

标签: javahibernate

解决方案


这是因为你没有初始化验证器,所以它不知道哪个数字是验证数字。您必须initialize显式调用该方法:

// when
PESELValidator validator = new PESELValidator();
validator.initialize(null);

这个论点是null因为它无论如何都被忽略了(很难说这种方法的作者的想法是什么)。


推荐阅读