hibernate-validator 6.1版本开始不支持使用BindingResult获取错误信息了?

发布于 2022-09-13 00:14:49 字数 2861 浏览 22 评论 0

刚刚使用了官网下载的最新版本hibernate-validator 7.0,发现用BindingResult的方式死活获取不到错误

image.png

然后观察发现用到的包和以前5.2.4用到的包不一样了,当切换回5.2.4的包之后功能一切正常,于是打开官网发现从6.1版本开始就开始使用Jakarta Bean Validation进行验证,用到的包名字从这个版本开始变了。请问6.1以后我这种写法为啥不起作用了??应该怎么写呢?谢谢

image.png

另外附上官网下载地址 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花间憩 2022-09-20 00:14:49

spring 版本多少?
可能需要5.x的版本才支持这个版本的参数校验

很酷又爱笑 2022-09-20 00:14:49

顶一下贴。。有人知道吗

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文