投资理财网站建设规划书,推广的十种方式,子页网站设计,东西湖注册公司Bean Validation主页上指出#xff1a;“ Bean Validation是Java规范#xff0c;…在Java SE中运行#xff0c;但集成在Java EE#xff08;6和7#xff09;中。” 这篇文章演示了如何在Java EE容器之外使用Java Bean验证参考实现#xff08; Hibernate Validator #x… Bean Validation主页上指出“ Bean Validation是Java规范…在Java SE中运行但集成在Java EE6和7中。” 这篇文章演示了如何在Java EE容器之外使用Java Bean验证参考实现 Hibernate Validator 。 这篇文章中的示例基于Hibernate Validator 5.1.3 Final 可从http://hibernate.org/validator/downloads下载。 “ Hibernate Validator入门 ”指出Hibernate Validator需要统一表达语言 JSR 341 和上下文和依赖项注入 CDI / JSR 346 的实现。 这些规范的实现可在符合Java EE的现代容器应用程序服务器中使用但是在Java SE环境中使用Hibernate Validator需要采购和使用单独的实现。 “ Hibernate Validator入门”页面提供了一种Maven XML可以用来识别对Expression Language API 我正在使用Expression Language 3.0 API Expression Language实施 我正在使用Expression Language Implementation 2.2.6 的依赖性。 以及Hibernate Validator CDI便携式扩展 我正在使用Hibernate Validator便携式扩展5.1.3 Final 。 我还使用Bean Validation API 1.1.0 Final JBoss Logging 3.3.0 Final和ClassMate 1.2.0来构建和运行示例。 本文中演示的bean验证示例定义了三个Java类。 Car.java是从“ Hibernate Validator入门 ”页面上提供的示例改编而成的一类接下来显示其代码清单。 汽车.java package dustin.examples;import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;/*** Example adapted from Getting Started with Hibernate Validator* (http://hibernate.org/validator/documentation/getting-started/).*/
public class Car
{NotNullprivate String manufacturer;NotNullSize(min 2, max 14)private String licensePlate;Min(2)private int seatCount;public Car(final String manufacturer, final String licencePlate, final int seatCount){this.manufacturer manufacturer;this.licensePlate licencePlate;this.seatCount seatCount;}public String getManufacturer(){return manufacturer;}public String getLicensePlate(){return licensePlate;}public int getSeatCount(){return seatCount;}Overridepublic String toString(){return Car{ manufacturer manufacturer \ , licensePlate licensePlate \ , seatCount seatCount };}
} Garage.java定义了Garage.java示例中使用的另一个类 Garage.java主要是Car的多个实例的包装。 它的主要目的是帮助说明Hibernate Bean Validator支持的递归验证。 车库.java package dustin.examples;import javax.validation.Valid;
import javax.validation.constraints.Size;import java.util.Collections;
import java.util.HashSet;
import java.util.Set;/*** Holds cars.*/
public class Garage
{Size(min 1)Validprivate final SetCar cars new HashSet();public Garage() {}public void addCar(final Car newCar){cars.add(newCar);}public SetCar getCars(){return Collections.unmodifiableSet(this.cars);}
} 上面列出的Garage代码使用Valid批注指示也应验证该类持有的Car实例“验证级联”。 本文的示例中使用的最后一个Java类是将实际执行两个带bean验证注释的类Car和Garage验证的类。 该类的清单如下所示。 HibernateValidatorDemonstration.java package dustin.examples;import static java.lang.System.out;import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.ValidatorFactory;
import javax.validation.Validator;
import java.util.Set;/*** Demonstrate use of Hibernate Validator.*/
public class HibernateValidatorDemonstration
{private final Validator validator;public HibernateValidatorDemonstration(){final ValidatorFactory factory Validation.buildDefaultValidatorFactory();validator factory.getValidator();}public void demonstrateValidator(){final Car nullManufacturerCar new Car(null, ABC123, 4);final SetConstraintViolationCar nullMfgViolations validator.validate(nullManufacturerCar);printConstraintViolationsToStandardOutput(Null Manufacturer Example, nullMfgViolations);final Car nullLicenseCar new Car(Honda, null, 3);final SetConstraintViolationCar nullLicenseViolations validator.validate(nullLicenseCar);printConstraintViolationsToStandardOutput(Null License Example, nullLicenseViolations);final Car oneSeatCar new Car(Toyota, 123ABC, 1);final SetConstraintViolationCar tooFewSeatsViolations validator.validate(oneSeatCar);printConstraintViolationsToStandardOutput(Too Few Seats Example, tooFewSeatsViolations);final Car oneDigitLicenseCar new Car(General Motors, I, 2);final SetConstraintViolationCar tooFewLicenseDigitsViolation validator.validate(oneDigitLicenseCar);printConstraintViolationsToStandardOutput(Too Few License Digits Example, tooFewLicenseDigitsViolation);final Car nullManufacturerNullLicenseCar new Car(null, null, 4);final SetConstraintViolationCar nullMfgLicenseViolation validator.validate(nullManufacturerNullLicenseCar);printConstraintViolationsToStandardOutput(Null Manufacturer and Null License Example, nullMfgLicenseViolation);final Garage garage new Garage();final SetConstraintViolationGarage noCarsInGarage validator.validate(garage);printConstraintViolationsToStandardOutput(No Cars in Garage, noCarsInGarage);garage.addCar(oneDigitLicenseCar);garage.addCar(oneSeatCar);garage.addCar(nullManufacturerNullLicenseCar);final SetConstraintViolationGarage messedUpCarsInGarage validator.validate(garage);printConstraintViolationsToStandardOutput(Messed Up Cars in Garage, messedUpCarsInGarage);}private T void printConstraintViolationsToStandardOutput(final String title,final SetConstraintViolationT violations){out.println(title);for (final ConstraintViolationT violation : violations){out.println(\t violation.getPropertyPath() violation.getMessage());}}public static void main(final String[] arguments){final HibernateValidatorDemonstration instance new HibernateValidatorDemonstration();instance.demonstrateValidator();}
} 上面的代码具有对javax.validation.Validator.validateTClass 的多次调用这些调用演示了对正在验证其实例的类的注释的有效性。 几个示例验证对象的单个验证冲突一个示例验证对象的多个验证冲突最后一个示例演示成功的级联冲突检测。 HibernateValidatorDemonstration类具有main(String[])函数可以在Java SE环境中执行该函数假定必需的JAR位于运行时类路径上。 接下来显示运行上述演示类的输出 Jul 19, 2015 9:30:05 PM org.hibernate.validator.internal.util.Version
INFO: HV000001: Hibernate Validator 5.1.3.Final
Null Manufacturer Examplemanufacturer may not be null
Null License ExamplelicensePlate may not be null
Too Few Seats ExampleseatCount must be greater than or equal to 2
Too Few License Digits ExamplelicensePlate size must be between 2 and 14
Null Manufacturer and Null License Examplemanufacturer may not be nulllicensePlate may not be null
No Cars in Garagecars size must be between 1 and 2147483647
Messed Up Cars in Garagecars[].licensePlate size must be between 2 and 14cars[].manufacturer may not be nullcars[].licensePlate may not be nullcars[].seatCount must be greater than or equal to 2结论 这篇文章证明了Bean验证规范的参考实现Hibernate Bean Validator可以在Java SE环境中执行。 作为演示的一部分还讨论了与Bean验证规范和Hibernate Bean验证器实现相关的一些基本概念。 其他资源 Java技巧独立实现中的休眠验证 如何将javax.validation导入我的Java SE项目 使用Hibernate Validator满足您的验证需求 翻译自: https://www.javacodegeeks.com/2015/07/using-hibernate-bean-validator-in-java-se.html