参数校验
hibernate框架与oval框架注意点:
1、针对Persons p = new Persons(null);
hibernate框架使用@NotBlank注解即可
oval框架则需要@NotBlank要和@NotNull复合使用,或者单独使用@NotNull
oval框架针对@NotBlank、@NotNull注解
①如果校验的对象是字符串,则需要@NotBlank、@NotNull复合使用,才能针对"“,null值进行判断校验,只使用@NotNull则无法校验出空字符串(”")
①如果校验的对象不是字符串可单独使用@NotNull
如下图:
2、hibernate框架引入jar包的时候需要引入org.hibernate,不能引用javax下的包
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
3、hibernate框架针对@AssertFalse、@AssertTrue注解,想要注解生效需要将方法名以 “is” 或者 “get” 开头,具体代码如下:
@AssertTrue(message = "如果xx为空,则xxxx必须有值")
private boolean getAssertTrues() {
//返回值为false时触发
return false;
}
@AssertFalse(message = "如果xxx为空,则xx和xxxx必须有值")
public boolean isAssertFalse() {
//返回值为true时触发
return true;
}
一、hibernate框架
引入jar包
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.1.Final</version>
</dependency>
工具类
import org.hibernate.validator.constraints.NotBlank;
import org.springframework.util.StringUtils;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.constraints.*;
import java.util.Set;
public final class ParamValidateUtil {
private static final ValidatorFactory FACTORY = Validation.buildDefaultValidatorFactory();
public static void main(String[] args) {
Persons p = new Persons(null);
ValidatorFactory factory = FACTORY;
Validator validator = factory.getValidator();
Set<ConstraintViolation<Persons>> validate = validator.validate(p);
if (validate.isEmpty()) {
return;
}
System.out.println(validate.iterator().next().getMessage());
}
/**
* 私有构造函数,不对外暴露
*
*/
private ParamValidateUtil() {
}
}
class Persons{
//@NotNull(message = "name")
@NotBlank(message = "name不能为空")
private String name;
private String sex;
@Min(4)
@Max(10)
private Integer age;
//@AssertFalse(message = "如果交易号为空,则请求流水号和请求时间必须值")
public boolean isssertTrue() {
return true;
}
//@AssertTrue(message = "如果交易号为空")
private boolean getassertTrues() {
return false;
}
public Persons(String name){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
二、oval框架
引入jar包
<dependency>
<groupId>net.sf.oval</groupId>
<artifactId>oval</artifactId>
<version>1.81</version>
</dependency>
工具类
import net.sf.oval.ConstraintViolation;
import net.sf.oval.Validator;
import net.sf.oval.constraint.*;
import java.util.List;
/**
* 请求参数校验类
*/
public class RequestValidator {
private RequestValidator() {
throw new IllegalAccessError("Utility class");
}
/**
* 参数校验器
*/
private static Validator validator = new Validator();
public static void main(String[] args) {
Person p = new Person(null);
validateParams(p);
}
public static void validateParams(Object object) {
System.out.println((Person)object);
List<ConstraintViolation> validate = validator.validate(object);
System.out.println(validate);
if (validate != null && validate.size() > 0) {
ConstraintViolation c = validate.iterator().next();
System.out.println( c.getMessage());
}
}
}
class Person{
@Length(min = 6, max = 10)
@NotBlank
@NotNull
private String name;
@Min(4)
@Max(10)
private Integer age;
public Person(){
}
public Person(String name){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}