Tag: bean validation

JSR303自定义validation器被调用两次

我正在使用Spring MVC创建一个网站,并且为了持久性我使用Spring Data JPA和Hibernate 4作为我的JPA提供者。 目前正在使用Hibernate Validator处理validation。 我有一个问题,我的validation器被调用两次,我无法弄清楚为什么。 这是一个问题的主要原因是因为第二轮,依赖关系没有自动连接到validation器,我得到一个空指针exception。 以下是导致失败的呼叫序列: 提交注册表单,首先调用NotDefaultSectValidator并成功完成用户对象上的“whereDidYouHearAboutUs”字段。 接下来调用UniqueUsernameValidator并成功完成“用户名”字段validation。 控制器上的’addUserFromForm’方法启动,并在bindingResults对象中找不到任何错误。 然后在UserService类上调用’addUser’方法。 此方法到达’userRepository.save(user);’行 但之后不要立即运行’print.ln’行。 单步执行此行将返回到“NotDefaultSectValidator”断点。 这是第二次完成,我重新输入第二个validation器’UniqueUsernameValidator’。 这里我得到一个空指针exception,因为出于某种原因,Spring第二次无法在DAO中自动assembly。 任何人都可以阐明为什么validation器被调用两次,特别是为什么要跨越’userRepository.save(user);’ 回到这些validation器? 非常感谢 这是我的user.java类 package com.dating.domain; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.PrePersist; import javax.persistence.PreUpdate; import javax.persistence.Table; […]

Java Bean Validation(JSR303)约束涉及几个bean属性之间的关系

假设我有以下简单的java bean: class MyBean { private Date startDate; private Date endDate; //setter, getters etc… } JSR 303中是否有一种机制来创建一个自定义validation器来validationstartDate必须在endDate之前的约束? 在我看来,这是一个常见的用例,但我找不到这种多属性关系约束的任何例子。

Spring MVC – REST服务中bean列表上的@Valid

在Spring MVC REST服务(json)中,我有一个像这样的控制器方法: @RequestMapping(method = RequestMethod.POST, value = { “/doesntmatter” }) @ResponseBody public List myMethod(@Valid @RequestBody List request, BindingResult bindingResult) { MyBean类具有beanvalidation注释的位置。 在这种情况下似乎没有进行validation,尽管它适用于其他控制器。 我不想将列表封装在dto中,这将改变json输入。 为什么没有对bean列表进行validation? 有哪些替代方案?

如何在Spring Boot项目中禁用Hibernatevalidation

我有一个spring boot项目,它有一个CrudRepository,一个Entity和一个Controller。 我基本上试图根据传递给Controller的数据来持久化实体。 为此,我使用的是spring-boot-starter-jpa 。 我的实体使用JSR-303注释进行注释, 在将数据传递给CrudRepository以进行持久化之前 ,在控制器中对其进行检查。 控制器方法: @RequestMapping(value = “users”, method = { RequestMethod.POST }) public SuccessfulResponse addUser(@Valid @RequestBody User user, BindingResult validation) { if (validation.hasErrors()) { throw new ValidationException(validation); } User saved = this.users.save(user); return new SuccessfulResponse(saved); } 实体: @Entity /* JPA */ public class User { @Id /* JPA */ @Column(name=”email_address”, […]