Hibernate Validator5.4.2--使用XML配置
来源:互联网 发布:网络女主播yy 编辑:程序博客网 时间:2024/06/01 10:22
7.通过XML配置
到目前为止,我们使用的都是注解。但是,也存在两种允许通过XML进行配置的XML描述符。第一个描述符描述了通用的Bean验证行为,并以META-INF / validation.xml的形式提供。第二个描述了约束声明,并通过注解与约束声明紧密匹配。
XSD文件可通过:
http://www.jboss.org/xml/ns/javax/validation/configuration
和http://www.jboss.org/xml/ns/javax/validation/mapping获取。
7.1.在validation.xml中配置验证器工厂
启用Hibernate Validator的XML配置的关键是META-INF / validation.xml文件。如果此文件存在于类路径中,则ValidatorFactory 在创建时将应用其配置。下图是validation.xml必须遵守的XML模式的模型视图:
下面的xml文件显示了validation.xml的几个配置选项。 所有设置都是可选的,同样的配置选项也可以通过javax.validation.Configuration以编程方式提供。实际上,XML配置将被通过编程API显式指定的值覆盖。甚至可以通过Configuration#ignoreXmlConfiguration()完全忽略XML配置。 另请参阅8.2.配置一个ValidatorFactory。
<validation-config xmlns="http://jboss.org/xml/ns/javax/validation/configuration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration"> <default-provider>com.acme.ValidationProvider</default-provider> <message-interpolator>com.acme.MessageInterpolator</message-interpolator> <traversable-resolver>com.acme.TraversableResolver</traversable-resolver> <constraint-validator-factory> com.acme.ConstraintValidatorFactory </constraint-validator-factory> <parameter-name-provider>com.acme.ParameterNameProvider</parameter-name-provider> <executable-validation enabled="true"> <default-validated-executable-types> <executable-type>CONSTRUCTORS</executable-type> <executable-type>NON_GETTER_METHODS</executable-type> <executable-type>GETTER_METHODS</executable-type> </default-validated-executable-types> </executable-validation> <constraint-mapping>META-INF/validation/constraints-car.xml</constraint-mapping> <property name="hibernate.validator.fail_fast">false</property></validation-config>
注意:在类路径中只能有一个名为META-INF / validation.xml的文件。如果发现多于一个,则抛出异常。
default-provider标签允许选择Bean验证提供程序,如果类路径中有多个提供程序,则这很有用。message-interpolator, traversable-resolver, constraint-validator-factory和parameter-name-provider标签允许自定义javax.validation包下的MessageInterpolator, TraversableResolver, ConstraintValidatorFactory和ParameterNameProvider接口的实现,有关这些接口的更多信息,请参阅8.2.配置一个ValidatorFactory部分章节。
executable-validation及其子标签定义方法验证的默认值。Bean Validation规范将构造函数和非getter方法定义为默认值。enabled属性作为全局开关来打开或关闭方法验证。
可以通过constraint-mapping标签列出任意数量的附加XML文件,其中包含实际的约束配置。映射文件名必须使用它们classpath下的完全限定名来指定。
可以通过property节点指定提供程序特定的属性。在这个例子中,我们使用了Hibernate Validator特定的属性hibernate.validator.fail_fast(见11.2.快速失败模式)。
7.2.通过映射约束constraint-mappings
可以通过遵循Validation mapping schema的XML文件来声明约束。注意,这些映射文件只有在validation.xml中的 constraint-mapping标签列出时才会被处理。
下面通过XML配置Bean约束:
<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.1.xsd" xmlns="http://jboss.org/xml/ns/javax/validation/mapping" version="1.1"> <default-package>org.hibernate.validator.referenceguide.chapter05</default-package> <bean class="Car" ignore-annotations="true"> <field name="manufacturer"> <constraint annotation="javax.validation.constraints.NotNull"/> </field> <field name="licensePlate"> <constraint annotation="javax.validation.constraints.NotNull"/> </field> <field name="seatCount"> <constraint annotation="javax.validation.constraints.Min"> <element name="value">2</element> </constraint> </field> <field name="driver"> <valid/> </field> <getter name="passedVehicleInspection" ignore-annotations="true"> <constraint annotation="javax.validation.constraints.AssertTrue"> <message>The car has to pass the vehicle inspection first</message> <groups> <value>CarChecks</value> </groups> <element name="max">10</element> </constraint> </getter> </bean> <bean class="RentalCar" ignore-annotations="true"> <class ignore-annotations="true"> <group-sequence> <value>RentalCar</value> <value>CarChecks</value> </group-sequence> </class> </bean> <constraint-definition annotation="org.mycompany.CheckCase"> <validated-by include-existing-validators="false"> <value>org.mycompany.CheckCaseValidator</value> </validated-by> </constraint-definition></constraint-mappings>
通过XML配置方法约束:
<constraint-mappings xmlns="http://jboss.org/xml/ns/javax/validation/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.1.xsd" version="1.1"> <default-package>org.hibernate.validator.referenceguide.chapter07</default-package> <bean class="RentalStation" ignore-annotations="true"> <constructor> <return-value> <constraint annotation="ValidRentalStation"/> </return-value> </constructor> <constructor> <parameter type="java.lang.String"> <constraint annotation="javax.validation.constraints.NotNull"/> </parameter> </constructor> <method name="getCustomers"> <return-value> <constraint annotation="javax.validation.constraints.NotNull"/> <constraint annotation="javax.validation.constraints.Size"> <element name="min">1</element> </constraint> </return-value> </method> <method name="rentCar"> <parameter type="Customer"> <constraint annotation="javax.validation.constraints.NotNull"/> </parameter> <parameter type="java.util.Date"> <constraint annotation="javax.validation.constraints.NotNull"/> <constraint annotation="javax.validation.constraints.Future"/> </parameter> <parameter type="int"> <constraint annotation="javax.validation.constraints.Min"> <element name="value">1</element> </constraint> </parameter> </method> </bean> <bean class="Garage" ignore-annotations="true"> <method name="buildCar"> <parameter type="java.util.List"/> <cross-parameter> <constraint annotation="ELAssert"> <element name="expression">...</element> <element name="validationAppliesTo">PARAMETERS</element> </constraint> </cross-parameter> </method> <method name="paintCar"> <parameter type="int"/> <return-value> <constraint annotation="ELAssert"> <element name="expression">...</element> <element name="validationAppliesTo">RETURN_VALUE</element> </constraint> </return-value> </method> </bean></constraint-mappings>
一个给定的类只能在所有配置文件中配置一次。对于给定的约束注解,同样适用于约束定义。它只能出现在一个映射文件中。如果违反了这些规则,则抛出ValidationException。
将ignore - annotation设置为true意味着对已配置在bean上的约束注解将被忽略。ignore- annotation也可用于字段、getter、构造函数、方法、参数、交叉参数和返回值。
- Hibernate Validator5.4.2--使用XML配置
- Hibernate Validator5.4.2--分组约束
- Hibernate Validator5.4.2--约束的错误信息
- Hibernate Validator5.4.2--创建自定义约束
- Hibernate Validator5.4.2--声明和验证bean的约束
- Hibernate Validator5.4.2--声明和验证方法约束
- Hibernate使用xml配置持久化类
- Spring整合Hibernate配置(使用hibernate.cfg.xml文件)
- java使用hibernate访问mysql 如何配置hibernate.cfg.xml
- java 使用hibernate访问sqlserver如何配置hibernate.cfg.xml
- Spring整合Hibernate配置(使用hibernate.cfg.xml文件)
- 零xml配置Hibernate:使用hibernate.properties代替hibernate.cfg.xml
- Hibernate初次使用配置实用,proxool.xml配置
- hibernate hibernate.cfg.xml配置
- Hibernate3使用(二)Spring整合Hibernate,使用xml配置
- dataAccessContext-hibernate.xml 配置
- hibernate.cfg.xml配置
- hibernate-config.xml配置
- Spring之ContextLoaderListener
- PINGCAP开源高可用架构TIDB
- 设计模式(二十四)------23种设计模式(16):状态模式
- 判断pc跳转手机端页面
- I2S音频总线学习(一)数字音频技术
- Hibernate Validator5.4.2--使用XML配置
- linux下使用C语言接收和发送udp组播数据分别怎么写?
- 微信公众号开发--获取用户信息中文乱码的解决方案
- Mongodb字段更新$rename操作符
- Android App后台、锁屏运行,百度定位不实时定位。未解问题,求大神指教?
- Ajax和跨域请求
- dubbo admin 管理平台搭建
- mysql数据库,日期格式转换及日期间的计算 date_format,date_sub
- I2S音频总线学习(二)I2S总线协议