news 2026/5/12 6:52:34

若依框架实战:参数验证异常处理(手机号码格式验证案例)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
若依框架实战:参数验证异常处理(手机号码格式验证案例)

一、前言

在后端开发中,参数校验是保证接口健壮性的第一道防线。若依(Ruoyi)框架作为主流的 Java 后台管理系统框架,内置了完善的参数验证与全局异常处理机制。

本文将以用户管理模块的手机号码格式验证为例,从触发验证、异常抛出、源码分析、异常总结四个维度,详解若依框架下参数验证异常的完整处理流程。


二、验证场景简介

1. 业务场景

用户管理 - 修改用户信息访问路径:系统管理 → 用户管理 → 修改

2. 验证目标

  • 字段:phonenumber(手机号码)
  • 验证规则:
    • @NotBlank:手机号码不能为空
    • @Pattern:必须符合 11 位手机号格式

3. 测试用例

表格

测试输入验证结果
13812345678正常(11 位)
12345格式错误(过短)
123456789012格式错误(过长)

三、触发验证并抛出异常

1. 操作步骤

  1. 进入:系统管理 → 用户管理
  2. 点击:修改按钮
  3. 输入:123456789012(12 位手机号,超出长度限制)

2. 前端验证效果

前端会直接拦截请求,弹出提示:

手机号码格式不正确,请输入 11 位有效手机号

前端验证说明
  • 基于@Pattern注解自动生成校验规则
  • 失焦 / 提交时触发校验
  • 阻止表单提交,友好提示

3. 后端异常日志

IDEA 控制台输出如下异常:

java

运行

2024-01-15 14:32:18.456 [http-nio-8080-exec-5] ERROR c.r.f.w.e.GlobalExceptionHandler - [validExceptionHandler,104] Validation failed for argument [0] in public com.ruoyi.common.core.domain.AjaxResult com.ruoyi.web.controller.system.SysUserController.edit(...): [Field error in object 'sysUser' on field 'phonenumber': rejected value [123456789012]; default message [手机号码格式不正确]]
异常核心信息
  • 异常捕获:GlobalExceptionHandler
  • 异常位置:SysUserController.edit()
  • 异常类型:MethodArgumentNotValidException
  • 错误字段:sysUser.phonenumber格式错误

四、完整源码分析

1. 前端实现(Vue + ElementUI)

表单组件(edit.vue)

vue

<el-form-item label="手机号码" prop="phonenumber"> <el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" /> </el-form-item>
验证规则

javascript

运行

rules: { phonenumber: [ { required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3-9]\d{9}$/, message: "手机号码格式不正确", trigger: "blur" } ] }
提交方法

javascript

运行

updateUser() { this.$refs["form"].validate(valid => { if (valid) { updateUser(this.form).then(res => { this.msgSuccess("修改成功"); }); } }); }
API 封装(user.js)

javascript

运行

// 更新用户信息 export function updateUser(data) { return request({ url: '/system/user', method: 'put', data: data }) }

2. 后端实现(SpringBoot + Validation)

Controller 层(SysUserController.java)

java

运行

@RestController @RequestMapping("/system/user") public class SysUserController { @PutMapping public AjaxResult edit(@Validated @RequestBody SysUser user) { return userService.updateUser(user); } }
实体类校验(SysUser.java)

java

运行

public class SysUser extends BaseEntity { @NotBlank(message = "手机号码不能为空") @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码格式不正确") private String phonenumber; // getter & setter }
全局异常处理(GlobalExceptionHandler.java)

java

运行

@RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(MethodArgumentNotValidException.class) public AjaxResult validExceptionHandler(MethodArgumentNotValidException e) { String message = e.getBindingResult().getFieldError().getDefaultMessage(); return AjaxResult.error(message); } }

五、参数验证生效必备条件

若要让后端参数验证正常生效、抛出异常但不崩溃,必须满足以下 4 点:

  1. 添加验证注解在实体类字段上添加@NotBlank@Pattern@NotNull等校验注解。

  2. 开启验证注解Controller 接口参数添加@Validated注解。

  3. 全局异常处理器使用@RestControllerAdvice注册全局异常处理类。

  4. 捕获对应异常精准捕获MethodArgumentNotValidException参数验证异常。


六、注意事项

  1. @NotNull不建议用于基本数据类型(int、long 等有默认值,无法校验 null)
  2. 建议使用包装类型(Integer、Long、String)配合校验
  3. 前端校验 + 后端校验双重保障,避免非法参数入库
  4. 正则表达式需严格匹配业务规则(手机号:^1[3-9]\\d{9}$

七、总结

本文通过手机号码验证实战案例,完整演示了若依框架下:

  • 前端表单校验逻辑
  • 后端参数校验注解
  • 全局异常捕获与返回
  • 验证异常完整链路

掌握这套机制,可快速实现统一、规范、安全的接口参数校验,提升系统稳定性与开发效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 6:52:31

概率论:二维随机变量

目录 一、二维随机变量分布函数的定义与性质 &#xff08;1&#xff09;联合分布函数函数及其几何意义 &#xff08;2&#xff09;联合分布函数的性质 &#xff08;3&#xff09;二维离散型随机变量 &#xff08;4&#xff09;二维连续型随机变量 二、边缘分布 &#xf…

作者头像 李华
网站建设 2026/5/12 6:51:34

从「LLM 使用者」到「LLM 驾驭者」:小白程序员必备的大模型核心知识体系与实战指南(收藏版)

本文将从底层原理、工程落地、应用优化三个维度&#xff0c;系统拆解大语言模型的核心知识体系&#xff0c;既保证技术深度&#xff0c;又用通俗的语言和实战案例降低理解门槛&#xff0c;适合所有想要从「LLM 使用者」进阶为「LLM 驾驭者」的读者。 一、LLM 核心原理入门&…

作者头像 李华
网站建设 2026/5/12 6:38:29

从U-Net分割到CNN端到端识别:构建一个鲁棒的中文车牌识别系统

1. 为什么需要端到端车牌识别系统 车牌识别听起来简单&#xff0c;但实际场景中会遇到各种头疼的问题。我做过一个停车场项目&#xff0c;现场测试时发现&#xff1a;下雨天车牌反光、车辆斜着停放、车牌上有泥点等情况&#xff0c;都会让传统识别方法直接崩溃。这就是为什么我…

作者头像 李华
网站建设 2026/5/12 6:37:51

2026年市面上的培训机构管理系统对比,谁才是性价比之王

教务是培训机构的 “心脏”&#xff0c;而排课是教务最核心、最耗时、最容易出错的环节。传统人工排课&#xff1a;打开 Excel&#xff0c;手动填教师、教室、学员、时间&#xff0c;反复核对冲突&#xff0c;排一周课表要 1–3 天&#xff0c;还经常出现&#xff1a;老师时间撞…

作者头像 李华
网站建设 2026/5/12 6:35:47

ARM链接器命令行选项优化与实战技巧

1. ARM链接器命令行选项深度解析 在嵌入式开发领域&#xff0c;ARM链接器(armlink)作为工具链的关键组件&#xff0c;承担着将多个目标文件合并为可执行程序的重任。不同于简单的文件拼接&#xff0c;现代链接器提供了数十种精细控制选项&#xff0c;能够深度优化代码布局、调试…

作者头像 李华