2014-11-22 56 views
2

我只是說hibernate-validator-5.1.3.Final.jar到我的類路徑和註釋的一個POJO:Hibernate驗證註釋不工作

public class Person { 
    @NotNull 
    private String name; 

    // etc... 
} 

然後我帶着司機來測試它:

public class Driver { 
    public static void main(String[] args) { 
     Person p = new Person(); 
     p.setName(null); 
    } 
} 

該執行不拋出任何驗證錯誤 - 我要去哪裏?

+1

你只是簡單地構造一個Person對象,所以不會在該對象上運行驗證。 Hibernate驗證如何知道這個對象,並且它是空的?這與使用其他註釋相同。您應該查看入門指南 - http://hibernate.org/validator/documentation/getting-started/ – mkobit 2014-11-22 01:34:30

回答

7

您應該運行驗證引擎,以檢查它是否有效與否:

public class Driver { 
    public static void main(String[] args) { 
     Person p = new Person(); 
     p.setName(null); 

     ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 
     Set<ConstraintViolation<Person>> constraints = factory.getValidator().validate(p); 
     // constraint will have the results of validation 

    } 
} 

您還需要添加javax.validation:validation-api到類路徑中。 大多數框架都在場景後面執行這些驗證邏輯以避免樣板代碼。

+1

您對有關所需驗證-api包的評論爲我節省了幾個小時的調試時間,謝謝。爲什麼需要它的原因是什麼? – vvondra 2015-12-14 22:29:11