gpt4 book ai didi

java - Java动态验证

转载 作者:行者123 更新时间:2023-12-03 23:00:39 24 4
gpt4 key购买 nike

我有一个带有某些字段(名字,姓氏,城市等)的实体对象。在一种情况下,我需要向该对象应用一组限制(非null,长度限制,唯一性等),而在另一种情况下,则应用另一组限制。目前,我正在使用自己的验证器,该验证器针对不同的用例具有不同的验证方法。

我可以通过其他方式(标准解决方案)执行验证吗?

我将Spring与Hibernate结合使用。在Hibernate中实现的JSR303标准无法解决我的问题,因为注释仅允许定义一组静态的限制。我无法在运行时重新定义它。

最佳答案

您可以使用Hibernate Validator通过ConstraintMapping:http://docs.jboss.org/hibernate/validator/4.1/api/org/hibernate/validator/cfg/ConstraintMapping.html以编程方式构造约束。可以找到文档http://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/programmaticapi.html

ConstraintMapping mapping = new ConstraintMapping();
mapping.type( Car.class )
.property( "manufacturer", FIELD )
.constraint( NotNullDef.class )
.property( "licensePlate", FIELD )
.constraint( NotNullDef.class )
.constraint( SizeDef.class )
.min( 2 )
.max( 14 )
.property( "seatCount", FIELD )
.constraint( MinDef.class )
.value ( 2 )
.type( RentalCar.class )
.property( "rentalStation", METHOD)
.constraint( NotNullDef.class );
HibernateValidatorConfiguration config = Validation.byProvider( HibernateValidator.class ).configure();
config.addMapping( mapping );
ValidatorFactory factory = config.buildValidatorFactory();
Validator validator = factory.getValidator();

关于java - Java动态验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16037977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com