天道酬勤,学无止境

hibernate-validator

如何使用 Spring MVC JSR-303 Validator 将不同的模型类验证为一种形式(How to Validate different model class into one form using Spring MVC JSR-303 Validator)

问题 我在jsp页面中有如下表单: <springForm:form action="${addAction}" name="frm" method="post" commandName="employee"> <table> <tr> <td><label>First Name</label> </td> <td><springForm:input path="firstName" /></td> <td><springForm:errors path="firstName" cssClass="error" /></td> </tr> <tr> <td><label>Last Name</label></td> <td><springForm:input path="lastName" /></td> <td><springForm:errors path="lastName" cssClass="error" /></td> </tr> <tr> <td><label>Email</label> </td> <td><springForm:input path="email" /></td> <td><springForm:errors path="email" cssClass="error" /></td> </tr> <tr> <td><label>Street<

2021-09-22 11:05:49    分类:技术分享    java   spring   spring-mvc   bean-validation   hibernate-validator

未来至少 24 小时的休眠验证器注释(Annotation for hibernate validator for a date at least 24 hours in the future)

问题 我知道存在注释@Future。 如果我用这个注释来注释字段 @Future private Date date; 日期必须在未来意味着在当前时刻之后。 现在我需要验证该日期至少在当前时刻之后 24 小时。 我怎样才能做到? 回答1 AfterTomorrow.java: @Target({ FIELD, METHOD, PARAMETER }) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = AfterTomorrowValidator.class) @Documented public @interface AfterTomorrow { String message() default "{AfterTomorrow.message}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; } AfterTomorrowValidator.java: public class AfterTomorrowValidator implements ConstraintValidator<AfterTomorrow, Date> { public final void initialize

2021-09-20 02:27:13    分类:技术分享    java   validation   date   spring-mvc   hibernate-validator

Bean 验证组序列不起作用(Bean validation group sequence not working)

问题 我正在为我的项目使用 spring 4.1,休眠验证器 5.1.3。 我一直试图让 GroupSequence 从过去 2 天开始工作。 我参考了验证文档、博客和在 stackoverflow 上发布的一些问题。 请看下面的课。 当我从注释中删除 GroupSequence 和组时,所有验证消息都会一起出现,即,对名称和其他字段的所有检查都被一起触发。 假设名称字段 - 我希望首先验证 @NotBlank 和 @Size,然后名称应该与 Pattern 匹配,最后应该检查 @UniqueName 因为数据库调用。 为此,我按照文档和答案中的建议创建了 GroupSequence。 但是当验证被触发时,只有@NotBlank 和@Size 被触发作为名称。 当我从剩余的注释中删除组值时,它们开始工作,但同时显示所有错误消息,这是我不想要的。 我希望使用组 First.class 指定的注释在 Second.class 验证之前一起触发。 我不明白为什么用组指定的验证没有被解雇。 有人可以指导我。 @GroupSequence({MyForm.class, OrderedChecks.class}) public class MyForm { @NotBlank @Size(min = 2, max = 40) @Pattern(regexp = "^[\\p{Alnum} ]+

2021-09-16 19:27:30    分类:技术分享    java   spring-mvc   bean-validation   hibernate-validator

在 Spring-MVC 中添加用于验证的自定义错误消息(Adding custom error messages for validation in Spring-MVC)

问题 我正在使用 Spring-MVC,我想在后端进行验证测试。 目前我能够执行测试,正确重定向到链接。 但我只能添加自定义错误消息,以防出现问题,例如:“名字为空”。 我尝试在 WEB-INF 中使用 ValidationMessages_en_EN.properties 文件,但这也没有帮助。 我正在发布我的代码,请让我知道我哪里出错了: 控制器 : @Controller public class PersonController { @RequestMapping(value = "/", method = RequestMethod.GET) public String listPersons(Model model) { Person person = personService.getCurrentlyAuthenticatedUser(); if(!(person==null)){ return "redirect:/canvas/list"; } else { model.addAttribute("person", new Person()); // model.addAttribute("listPersons", this.personService.listPersons()); model.addAttribute("notices",new Notes

2021-09-15 22:17:47    分类:技术分享    validation   spring-mvc   hibernate-validator

在 Hibernate Validator 中为每个属性生成错误代码(Generating a error code per property in Hibernate Validator)

问题 我正在考虑使用 Hibernate Validator 来满足我的要求。 我想验证一个 JavaBean,其中属性可能有多个验证检查。 例如: class MyValidationBean { @NotNull @Length( min = 5, max = 10 ) private String myProperty; } 但是,如果此属性验证失败,我希望将特定错误代码与 ConstraintViolation 相关联,无论它是否因为 @Required 或 @Length 而失败,尽管我想保留错误消息。 class MyValidationBean { @NotNull @Length( min = 5, max = 10 ) @ErrorCode( "1234" ) private String myProperty; } 像上面这样的东西会很好,但它不必完全像那样结构。 我看不到使用 Hibernate Validator 执行此操作的方法。 是否可以? 回答1 您可以创建一个自定义注释来获取您正在寻找的行为,然后在验证和使用 refelection 时,您可以提取注释的值。 类似于以下内容: @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface

2021-09-15 06:12:00    分类:技术分享    java   validation   hibernate-validator

如果@Constraint(validated by = {}),则休眠验证器验证约束(Hibernate validator to validate constraints if @Constraint(validated by = {}))

问题 我有一个使用休眠验证器进行验证的 Spring Web 应用程序。 我有位于不同项目中的约束注释。 我需要在我的 spring 项目中为这些约束设置验证器,因为我需要一些服务来执行验证。 所以情况是:我不能将我的约束验证器放在 @Constraint(validatedBy = MyConstraintValidator.class) 因为验证器在不同的项目中,我不能添加依赖,因为这会创建一个循环依赖,这不是我们的方式想要它。 我注意到 javax.constraints 没有指定验证器,它只是 @Constraint(validatedBy= {})。 但是休眠验证器仍然知道如何验证它们。 有没有办法告诉我的休眠验证器如何在不指定约束验证器的情况下验证我的约束? 我希望能够验证这个约束: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) @Constraint(validatedBy = {}) public @interface OneOf { String message() default "{OneOf}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; } 谢谢! 回答1

2021-09-15 01:50:54    分类:技术分享    java   spring-mvc   constraints   hibernate-validator

@MockMvc does not work with validation annotated with @Valid

None of these solutions helped here: Spring mockMvc doesn't consider validation in my test. Added all of these dependencies, nothing helps. I use Spring Boot 2.1.2, pom.xml: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.2.RELEASE</version> </parent> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot

2021-09-04 08:22:48    分类:问答    java   spring-boot   hibernate-validator   spring-boot-test   spring-mvc-test

When using @AssertTrue in methods, the method is invoked 4 times during validation (Bean Validation)

When using bean validation to validate the state of an object, the method annotated with @AssertTrue is called 4 times whenever the validation is invoked. It should only be called once per invocation. Hibernate-validator version: 5.1.3.Final Here is an example: For the following class Motorcycle: import javax.validation.constraints.AssertTrue; class Motorcycle{ private int fuel; private int tireDurability; @AssertTrue(message = "motorcycle.not.available.to.use") public boolean isAvailable(){ return fuel > 0 && tireDurability > 0; } public void toUse(){...} } And the main: import javax

2021-08-30 06:38:55    分类:问答    java   validation   bean-validation   hibernate-validator   custom-validators

Hibernate Validator 6.0.8 jars causing exception

I am following a tutorial on Spring MVC and after attempting to implement Hibernate validation, I'm now getting HTTP Status 500 - Servlet.init() for servlet dispatcher threw exception when running the application on the server. I took the 3 Hibernate jar dependencies out of the POM.xml and it served up the home page without any issue (I had to comment the Hibernate validation annotations in the Customer object class) but when I added them back in (annotations were still commented) I got the error again! Does anybody have any idea why the Hibernate Jars are causing this error? Tomcat version: 7

2021-08-30 02:23:43    分类:问答    java   spring-mvc   hibernate-validator

Java bean validation: Enforce a @Pattern only when the property is not blank

I have a form that allows the user to optionally enter their zip code. I know how to validate the format of the zip code, by using a @Pattern constraint and regex. But as this is an optional field, I do not want the format validated if it is blank. How can I tell the system to ignore the @Pattern constraint if the field is blank? This is an optional field and I only want to validate it if it is not blank. public class MyForm { String firstName; String lastName; @Pattern(regex = "^\d{5}(?:[-\s]\d{4})?$") String optionalZipCode; // <- This is an optional field. }

2021-08-12 16:11:33    分类:问答    bean-validation   hibernate-validator