千家信息网

如何使用BindingResult自定义错误信息

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"如何使用BindingResult自定义错误信息"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2026年11月03日如何使用BindingResult自定义错误信息

本篇内容介绍了"如何使用BindingResult自定义错误信息"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

目录
  • BindingResult 自定义错误信息

    • 前提概要

    • 基础框架

    • 配置文件和Java代码的修改

    • 在Controller方法中指定需要进行校验

    • 进行自定义校验

    • 在JSP页面上显示校验错误信息

  • BindingResult错误返回显示失败

    BindingResult 自定义错误信息

    前提概要

    在Spring MVC和FreeMarker整合的项目中,采用JSR-303验证框架,通过注解的方式进行数据验证

    基础框架

    MVC:Spring MVC 3

    视图:FreeMarker

    验证:Hibernate-validator实现

    配置文件和Java代码的修改

    在Spring MVC配置文件中添加配置

    添加以下mvc的注解驱动配置,一切变成"自动化"

    在JavaBean中添加数据校验的注解

    其中@Length、@email就是Hibernate-validator中的数据校验注解,还可以用javax.validation中的注解,比如@NotNull

    public class SystemUser {      @Length(min = 5, max = 20, message = "用户名长度必须位于5到20之间")      private String userName;       @Email(message = "比如输入正确的邮箱")      private String email;  }

    在Controller方法中指定需要进行校验

    首先,要在需要进行校验的Bean前面加上@Valid注解,告诉SpringMVC框架这个Bean需要进行校验;

    同时,还要在需要校验的Bean前面加上@modelattribute注解,从而将Bean暴露给视图,并且指定名字,这有两个作用,第一是显示校验错误需要使用这个名字,第二个是返回原来的页面以后,前面输入的所有值还要显示出来;

    其次,每个需要校验的Bean后面紧跟一个BindingResult,SpringMVC框架会将校验结果保存在它里面,通过hasErrors方法可以判断是否有校验错误;

    最后,当返回到原页面以后,SpringMVC框架还会将所有校验错误信息保存在上下文中,供页面上取得校验错误,Spring提供了一套JSP自定义标签。

    @RequestMapping(value = "/create.html", method = RequestMethod.POST)  public String doCreateUser(          @Valid @ModelAttribute("userDetail") SystemUser user,          BindingResult bindingResult,          HttpServletRequest request) {      // 如果有校验错误,返回添加用户的页面      if (bindingResult.hasErrors()) {          return "/user/create";      }            this.userService.createUser(user);      return "/user/list.html";  }

    进行自定义校验

    如果需要添加自定义校验,比如验证用户名是否已经被使用了,那么简单的注解自然无能为力,需要自己编码实现,如果校验失败,可以手动将自定义校验错误添加到BindingResult中。

    @RequestMapping(value = "/user/create.html", method = RequestMethod.POST)  public String doCreateUser(          @Valid @ModelAttribute("userDetail") SystemUser user,          BindingResult bindingResult,          HttpServletRequest request) {      // 如果有数据校验错误,返回添加用户的页面      if (bindingResult.hasErrors()) {          return "/user/create";      }        boolean isUserNameExist = this.userService.checkUserByUserName(user.getUserName());      // 如果用户名已存在,返回添加用户的页面      if (isUserNameExist) {          // 向BindingResult添加用户已存在的校验错误          bindingResult.rejectValue("userName", "该用户名已存在", "该用户名已存在");          return "/user/create";      }            this.userService.createUser(user);      return "/user/list.html";  }

    在JSP页面上显示校验错误信息

    返回页面以后,SpringMVC框架将所有校验错误信息都放在了上下文中,可以自己去取出来,但是那样非常麻烦,不过没关系,Spring提供了一套自定义标签,可以方便的显示校验错误信息。

    页面头部需要导入Spring的自定义标签库

    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

    需要一次性显示全部校验错误

    (commandName的值就是@modelattribute注解中指定的值)

      

    需要在对应输入框的后面显示单个校验错误

    (通过path指定显示那个具体的校验错误,userDetail正是@modelattribute注解中指定的值,而点号后面则是指定显示Bean中哪个属性的校验错误)

       

    BindingResult错误返回显示失败

    作为一个初学者经常犯低级错误,特别是没有老师的情况下。绊了一整天,不过找到原因了

    如果redirect跳转回造成参数丢失

    此时可以设置返回参数为Object

    @RequestMapping(value = "/save", method = RequestMethod.POST)public Object test(HttpServletRequest request, Model model, @Validated User user, BindingResult bindingResult)throws Exception {if (bindingResult.hasErrors()) {return "user/save";}user.setVersion(0);return new ModelAndView("redirect:/user/list");}

    "如何使用BindingResult自定义错误信息"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

    错误 注解 页面 信息 用户 框架 用户名 配置 中指 数据 验证 文件 方法 标签 输入 上下 上下文 代码 内容 前提 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 互联网科技会 互联网品科技 朗新科技与工业互联网 互联网金融 科技金融 美国互联网黑科技 融贸通互联网科技 中国互联网金融科技基金 华脉科技工业互联网产品 哈尔滨秒房互联网科技有限公司 团飞科技与伯堂互联网服务平台 中化能源互联网科技招聘 互联网科技与管理 互联网科技公司有风险吗 崇明区互联网教育科技售后服务 中国互联网公司排名锤子科技 南通创西澳互联网科技有限公司 互联网公司高科技产品 恒生科技指数 中概互联网 优雇互联网科技有限公司 互联网新科技 互联网科技垄断 成都互联网科技公司 互联网巨头投资的硬核科技 互联网企业和科技型企业 山东星卡互联网科技有限公司官网 易企秀互联网科技是做什么的 九思连强互联网电子科技有限公司 中国新注册互联网科技 陕西彩京云互联网科技有限公司
    0