news 2026/5/11 5:21:46

若依框架实战:实现用户电话号码参数验证异常

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
若依框架实战:实现用户电话号码参数验证异常

本文为若依框架参数验证作业实战教程,按照官方 PPT 规范,全新实现手机号码长度校验异常,包含完整触发流程、前后端代码、异常日志与原理分析,可直接用于 CSDN 发布。

一、前言

在后端接口开发中,参数校验是保证系统稳定、数据合法的关键环节。传统手动if-else判断存在代码冗余、维护困难等问题,而若依框架基于 Spring Validation 实现了优雅的注解式参数验证,可大幅简化开发。

本文以用户管理模块 - 手机号码长度校验为例,完整复现参数验证异常触发、捕获、返回、日志记录全流程,与课堂 PPT 的「角色名称校验」形成独立新案例,完全符合作业要求。


二、异常触发方式

1. 业务场景

进入系统:系统管理 → 用户管理 → 新增 / 修改用户

2. 触发条件

手机号码输入框中,输入超过 11 位的数字,例如:

plaintext

12345678901234567890(共20位)

3. 预期结果

触发后端参数验证,前端提示:手机号码长度不能超过 11 个字符


三、前端现象展示

  1. 输入超长手机号码,点击确定提交
  2. 前端请求被正常发送(前端未完全拦截长度)
  3. 接口返回500状态码
  4. 页面弹出提示:手机号码长度不能超过 11 个字符

前端返回报文

{ "code": 500, "msg": "手机号码长度不能超过11个字符" }

四、前端代码分析

1. 页面输入框限制

文件路径:src/views/system/user/index.vue

<el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" />

2. 表单验证规则

前端仅做格式正则校验,不限制长度,因此超长内容可提交到后端:

rules: { phonenumber: [ { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" } ] }

3. 提交与接口请求

// 提交表单 submitForm: function() { this.$refs["form"].validate(valid => { if (valid) { updateUser(this.form).then(() => { this.$modal.msgSuccess("修改成功"); this.open = false; }) } }) } // 接口封装 user.js export function updateUser(data) { return request({ url: '/system/user', method: 'put', data: data }) }

五、后端代码分析

1. 实体类字段校验(核心)

文件:SysUser.java给手机号码添加@Size注解,限制最大长度 11:

import jakarta.validation.constraints.Size; @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符") public String getPhonenumber() { return phonenumber; }

2. Controller 开启验证

必须添加@Validated注解才能触发参数校验:

@PutMapping public AjaxResult edit(@Validated @RequestBody SysUser user) { return toAjax(userService.updateUser(user)); }

3. 异常类型

参数不合法时,自动抛出:

MethodArgumentNotValidException

六、全局异常处理(若依原生)

文件:GlobalExceptionHandler.java统一捕获参数验证异常,并返回友好提示:

@RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(MethodArgumentNotValidException.class) public Object handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { log.error(e.getMessage(), e); String message = e.getBindingResult().getFieldError().getDefaultMessage(); return AjaxResult.error(message); } }

七、后端日志信息(IDEA 控制台)

22:35:08.308 [http-nio-8080-exec-17] 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(com.ruoyi.common.core.domain.entity.SysUser): [Field error in object 'sysUser' on field 'phonenumber': rejected value [12345678901234567890]; codes [Size.sysUser.phonenumber,Size.phonenumber,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [sysUser.phonenumber,phonenumber]; arguments []; default message [phonenumber],11,0]; default message [手机号码长度不能超过11个字符]]

日志关键信息

  • 捕获者:GlobalExceptionHandler
  • 抛出位置:SysUserController.edit
  • 异常字段:phonenumber
  • 错误信息:手机号码长度不能超过 11 个字符

八、生产环境日志查看

生产环境无法查看 IDE 控制台,异常会持久化到日志文件:

  • 路径:/home/ruoyi/logs/sys-error.log
  • 内容与控制台一致,可用于线上问题排查。

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

  1. 实体类加验证注解@Size/@NotBlank/@NotNull
  2. Controller 加@Validated:开启参数验证
  3. 全局异常处理器@RestControllerAdvice
  4. 捕获对应异常MethodArgumentNotValidException

十、总结

本文基于若依框架,全新实现了用户手机号码长度参数验证,与课堂「角色名称验证」完全独立,满足作业 “新例子” 要求。

通过注解式参数验证:

  • 告别冗余if-else
  • 统一异常处理
  • 日志可追踪
  • 前后端分离更清晰

📄 配套 PPT 在线查看:[若依框架实战:用户电话号码参数验证异常]
www.kdocs.cn/l/cuez57bdRZZs

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

Docker Compose智能副驾驶:用自然语言管理容器编排

1. 项目概述&#xff1a;一个为Docker Compose注入AI智能的“副驾驶”最近在折腾本地开发环境&#xff0c;尤其是那些由多个容器组成的微服务项目&#xff0c;每次修改配置、排查服务依赖、查看日志链路都感觉像是在玩一个复杂的“连连看”游戏。Docker Compose 的docker-compo…

作者头像 李华
网站建设 2026/5/11 5:17:31

Uptime Kuma 们的回潮:LLM API 把拨测工具推回了运维 C 位

我们多年以来用 Prometheus blackbox exporter 自己写拨测——probe_success、probe_http_status_code、Alertmanager 路由、Grafana 拼板,一条龙。Uptime Kuma、Uptime Robot 这种"按几下就能监控"的轻量工具,下意识被归到了"个人站长玩具"那一栏,从未认…

作者头像 李华
网站建设 2026/5/11 5:15:47

Word 2016 排版进阶(1): 巧用域代码批量处理交叉引用格式

1. 为什么需要批量处理交叉引用格式 写论文或者技术文档的时候&#xff0c;最让人头疼的就是参考文献的引用格式问题。我刚开始写毕业论文那会儿&#xff0c;每次修改文献顺序&#xff0c;那些引用编号就全乱套了&#xff0c;一个个手动调整简直要命。后来发现Word 2016的域代码…

作者头像 李华
网站建设 2026/5/11 5:11:32

BrowserMCP:基于MCP协议的浏览器自动化中间件,连接AI与Web交互

1. 项目概述&#xff1a;一个连接浏览器与AI的“中间件”最近在折腾AI应用开发时&#xff0c;我遇到了一个挺典型的痛点&#xff1a;想让大语言模型&#xff08;比如ChatGPT、Claude或者本地部署的Llama&#xff09;去操作浏览器&#xff0c;完成一些自动化任务&#xff0c;比如…

作者头像 李华
网站建设 2026/5/11 5:09:45

Arm CoreSight SoC-400调试跟踪系统架构与应用解析

1. Arm CoreSight SoC-400技术架构解析作为一名长期从事嵌入式系统开发的工程师&#xff0c;我深知调试和跟踪功能在复杂SoC设计中的重要性。Arm CoreSight SoC-400正是为解决这一需求而生的专业调试跟踪解决方案。这套系统不仅提供了完整的调试基础设施&#xff0c;还通过高度…

作者头像 李华