用Annotations 給類或者類的屬性加上約束(constraint),在運行期檢查屬性值是很優雅的.Hibernate Validator就是這樣的一個框架.該框架是十分輕易的(就像參考文檔中宣稱的那樣),幾乎沒有什么學習曲線,Validator 是一個驗證框架 不需要和Hibernate的其他部分綁定就可以使用,只要在你的項目中添加Hibernate-annotations.jar庫就可以了.那么下面就讓我們看看怎么使用吧.
Person.java 類
/*
* Created on 2006-1-12 Person.java
* @author
*/
package test.annotation.validator;
import org.hibernate.validator.Length;
import org.hibernate.validator.Min;
import org.hibernate.validator.Valid;
//@Serializability //測試自定義約束
public class Person {
PRivate String name;
private int age;
private Address address;
public Person() {}
@Valid //注重此處
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Min(value = 1)
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Length(min = 4)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Address.java 類
/*
* Created on 2006-1-12 Address.java
* @author
*/
package test.annotation.validator;
import org.hibernate.validator.Length;
import org.hibernate.validator.Max;
import org.hibernate.validator.Min;
public class Address {
private String street;
private int num;
public Address() {}
@Min(value = 1)
@Max(value = 100)
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Length(min = 3,max = 8)
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
}
上面是兩個用 Validator Annotations 注釋的 類. 每個屬性都用 約束限制了. 下面看看測試的類吧:
TestValidator.java 類
/*
* Created on 2006-1-12
* @author icerain
*/
package test.annotation.validator;
import org.hibernate.validator.ClassValidator;
import org.hibernate.validator.InvalidValue;
public class TestValidator {
public void test() {
Address add = new Address();
add.setNum(0);
add.setStreet("1");
Person p = new Person();
p.setAddress(add);
p.setAge(0);
p.setName("ice");
/******************Test validator ********/
// 注重該處只驗證了Person 為了說明 @Valid 注釋的使用
ClassValidator<Person> classValidator = new ClassValidator<Person> (Person.class);
InvalidValue[] validMessages = classValidator.getInvalidValues(p);
for (InvalidValue value : validMessages) {
System.out.println("InvalidValue 的長度是:" + validMessages.length
+" . 驗證消息是: " + value.getMessage()
+ " . PropertyPath 是:" + value.getPropertyPath()
+" ./n/t PropertyName 是: " +value.getPropertyName()
+ "Value 是: " + value.getValue()
+" Bean 是: "+ value.getBean()
+"/n/t BeanClass 是:" + value.getBeanClass());
}
}
public static void main(String[] args) {
new TestValidator().test();
}
}
|
新聞熱點
疑難解答