hibernate-validator 6.1版本开始不支持使用BindingResult获取错误信息了?
刚刚使用了官网下载的最新版本hibernate-validator 7.0,发现用BindingResult的方式死活获取不到错误
然后观察发现用到的包和以前5.2.4用到的包不一样了,当切换回5.2.4的包之后功能一切正常,于是打开官网发现从6.1版本开始就开始使用Jakarta Bean Validation进行验证,用到的包名字从这个版本开始变了。请问6.1以后我这种写法为啥不起作用了??应该怎么写呢?谢谢
另外附上官网下载地址 http://hibernate.org/validato...
补充:刚刚发现所有jakarta.validation.constraints下的注解都无法使用BindingResult获取错误,org.hibernate.validator.constraints下的才可以。。请问怎么办呢
再次补充,附上代码
User.java
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Past; import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.NumberFormat; import java.util.Date; public class User { @NotNull(message = "id不能为空") private Integer id; @Length(min = 2, max = 12, message = "姓名长度必须在2到12位") private String name; @DateTimeFormat(pattern = "yyyy-MM-dd") @Past(message = "出生日期不能超过当前时间") private Date birth; @NumberFormat(pattern = "##,###.##") private Double salary; public User() { } public User(Integer id, String name, Date birth, Double salary) { this.id = id; this.name = name; this.birth = birth; this.salary = salary; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", birth=" + birth + ", salary=" + salary + '}'; } }
TestDataBindingController.java
import jakarta.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import pojo.User; @Controller @RequestMapping("/part3") public class TestDataBindingController { @RequestMapping("/test") public String test(@Valid User user, BindingResult bindingResult) { bindingResult.getAllErrors().forEach(error -> System.out.println(error.getDefaultMessage())); System.out.println(user); return "index"; } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
spring 版本多少?
可能需要5.x的版本才支持这个版本的参数校验
顶一下贴。。有人知道吗