Tag: hibernate validator

如何使用@DecimalMin和@DecimalMaxvalidationList ?

在我的Spring项目中,我有一个POJO类,它具有CMYK颜色的属性。 我希望这个属性由一个JSON数组表示,该数组恰好有4个浮点数。 每个数字必须介于0.0和1.0之间。 目前我正在努力validation这个属性。 我已经研究过,发现@DecimalMin和@DecimalMax注释不能用于Float或float (请参阅这个问题的答案)。 因此我已经放弃了List List而是使用List 。 这是我剥离的POJO课程: public class Settings { @NotNull @Size(min = 4, max = 4) @DecimalMin(“0”) @DecimalMax(“1”) private List cmykColor; public List getCmykColor() { return cmykColor; } public void setCmykColor(List cmykColor) { this.cmykColor = cmykColor; } } 这里是JUnit测试: @RunWith(SpringRunner.class) @SpringBootTest public class SettingsTest extends Assert { @Autowired private ObjectMapper […]

Hibernatevalidation器的国际化

Hibernatevalidation器是否支持国际化。 我看到了jar,我可以看到各种ValidationMessages.properties文件。 我们可以创建自己的自定义错误消息,这些消息将被国际化吗? 我不想使用Hibernatevalidation器中默认提供的错误消息。 我们需要使用自己的自定义消息,它们应该是国际化的。 以及Hibernatevalidation器支持的语言是什么。 在jar中我看到了英语,法语,德语,土耳其语和蒙古语的属性文件。 我们可以添加更多语言,例如西class牙语,葡萄牙语等?

是否有使用带注释的方法参数启用JSR 303 Bean Validation的标准方法

我一直在寻找一段时间而没有运气。 我没有使用Spring MVC,但仍希望使用@javax.validation.Valid来启用方法参数的validation。 举个例子 public class EventServiceImpl implements IEventService { @Override public void invite(@Valid Event event, @Valid User user) { … } } 使用MVC,这为@Controller注释bean启用了一个简单的 (参见5.7.4.3配置一个JSR-303validation器供Spring MVC使用 )。 使用AOP应该是非常简单的。 不过,我怀疑有一些标准的方法可以做到这一点。 因此,问题是:对于非MVC应用程序和非控制器bean,是否存在类似的事情,以便为带注释的bean启用输入validation?

Hibernate Validator,自定义ResourceBundleLocator和Spring

我正在尝试在hibernatevalidation4.1中覆盖默认的ResourceBundleLocator。 到目前为止它完美地运行,但其使用的唯一示例包括用于实例化ValidationFactory的Java代码。 当使用具有spring hibernate的web应用程序时,会自动配置validation(只应存在合适的hibernatevalidation* .jar文件并自动使用)。 如何在该场景中替换ResourceBundleLocator? 我没有看到在任何属性或applicationContext.xml文件中规划我的自定义ResourceBundleLocator的方法。

Spring Rest Controller:如何有选择地关闭validation

在我的控制器中,我有一个创建实体的方法 import javax.validation.Valid; … @RestController public class Controller { @RequestMapping(method = RequestMethod.POST) public ResponseEntity create(@Valid @RequestBody RequestDTO requestDTO) { … 同 import org.hibernate.validator.constraints.NotEmpty; … public class RequestDTO @NotEmpty // (1) private String field1; //other fields, getters and setters. 我想添加一个控制器方法 update(@Valid @RequestBody RequestDTO requestDTO) 但是在这种方法中,应该允许field1为空或为空,即行 @NotEmpty // (1) RequestDTO应该被忽略。 我怎样才能做到这一点? 我是否必须编写一个与RequestDTO完全相同的类,但没有注释? 或者通过inheritance以某种方式可能?

hibernate-validator中的exception。 嵌套exception是java.lang.NoClassDefFoundError:ConfigurationImpl

细节: 我在Spring中使用javax-validation和hibaernate-validator进行表单validation。 除了Spring的基本必需JAR文件。 我包括: validation-api-1.1.0.Final hibernate-validator-5.1.0.Final 我读到某个地方,spl4j版本也值得关注:所以我也说: ###slf4j-api-1.7.5### ###slf4j-simple-1.7.5### ###log4j-1.2.17### 错误的原因可能是由于slf4j和log4j的兼容性? 我使用注释基础validation。 我来提供一些代码: Customer.java import java.util.Date; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Past; import javax.validation.constraints.Size; import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.NotEmpty; import org.springframework.format.annotation.DateTimeFormat; public class Customer { @Size(min=2, max=30) @NotEmpty private String name; @NotEmpty @Email private String email; @NotNull @Min(18) @Max(100) private Integer age; public String […]

由于Bean Validation API而无法启动Hibernate Validator

我正在尝试在我的项目中使用Hibernate Validator,但它无法正常工作。 在以下行: SessionFactory sessions = config.buildSessionFactory(builder.build()); 我得到以下exception: org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:154) at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:311) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857) at net.myProject.server.util.HibernateUtil.(HibernateUtil.java:32) … 36 more Caused by: java.lang.NoSuchMethodError: javax.validation.spi.ConfigurationState.getParameterNameProvider()Ljavax/validation/ParameterNameProvider; at org.hibernate.validator.internal.engine.ValidatorFactoryImpl.(ValidatorFactoryImpl.java:119) at org.hibernate.validator.HibernateValidator.buildValidatorFactory(HibernateValidator.java:45) at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:217) at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111) 我发现这个问题与我的问题非常相似。 他将他的解决方案描述为 我在类路径中有另一个beanvalidation器jar。 但不是来自maven,所以我没有意识到这一点。 删除它解决了问题。 我认为我的问题是一样的。 在http://hibernate.org/validator/documentation/getting-started/上它说: 这种传递性依赖于Bean Validation API(javax.validation:validation-api:1.1.0.Final) 这必定会导致此问题,因为恢复到旧版本(4.3.1.Final)可以解决问题。 有没有办法强制Hibernate不引入Bean Validation API? 编辑:我试图排除javaxvalidationapi: org.hibernate hibernate-validator 5.0.3.Final […]

如何使用Hibernate Validator动态解析消息参数?

我正在使用Hibernate Validator,并希望在错误消息中解析类别的名称。 考虑这个简单的场景: public class Category { private String name; } public class Product { @HazardousCategoryConstraint(message = “{haz.cat.error}”) private Category category; private String name; } public class InventoryReport { @Valid private List products; } ValidationMessages.properties haz.cat.error={name} is a product in the hazardous category list. 假设我有一个HazardousCategoryConstraint的工作实现。 validation器根据受限制的名称列表检查每个类别的名称。 当我调用validate(InventoryReport)时,我得到了我期望的错误数,除非它们是相同的字符串。 我想看到分类的名称已解析为每条消息。 有人能指出我如何动态解决参数,或告诉我如何?

Hibernate – 激活Bean Validation集成时出错

我正在尝试设置Hibernate。 但是当我尝试使用以下代码创建会话工厂时: Configuration configuration = new Configuration(); configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); 我收到错误: org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:156) at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:303) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1760) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) […]