当前位置: 首页 > news >正文

SpringBoot参数验证

前言

本文基于若依(Ruoyi)框架,基于若依框架新建MyStudent 学生实体,实现后端参数验证。

一、需求说明

对学生实体MyStudentname(学生姓名)字段做后端参数校验:

  1. 学生名称不能为空

  2. 学生名称长度不超过10 个字符

  3. 验证失败抛出MethodArgumentNotValidException

  4. 全局异常处理返回友好提示,日志持久化

二、后端代码实现

1. 学生实体类:MyStudent.java

2. 学生控制器:MyStudentController.java

3. 全局异常处理器

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

三、参数验证触发流程

  • 前端 / 接口测试工具提交超长学生姓名(如:12345678901,共 11 位)

  • Controller 方法上的@Validated开启验证

  • 校验MyStudent.name发现长度超过 10

  • 抛出MethodArgumentNotValidException

  • 全局异常处理器捕获并返回提示信息

  • 前端展示错误提示,后端控制台输出异常日志

四、测试结果

1. 测试场景 1:学生名称为空

返回提示:学生名称不能为空

2. 测试场景 2:名称长度 1 个字符

结果:验证通过

3. 测试场景 3:名称长度 11 个字符

返回提示:学生名称长度不能超过10个字符

4. 后端控制台日志

14:46:34.654 [http-nio-8080-exec-14] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - [logException,208] - Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.ruoyi.common.core.domain.AjaxResult com.ruoyi.system.controller.MyStudentController.edit(com.ruoyi.system.domain.MyStudent): [Field error in object 'myStudent' on field 'name': rejected value [周住在新泽西州新泽西这小子新泽西州]; codes [Size.myStudent.name,Size.name,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [myStudent.name,name]; arguments []; default message [name],10,0]; default message [学生名称长度不能超过10个字符]] ]

http://www.jsqmd.com/news/792932/

相关文章:

  • AI技能赋能:Crowdin本地化工作流自动化实战指南
  • 终极DLSS Swapper指南:3步掌握游戏性能优化利器,免费提升帧率
  • 从虚拟到物理:原型设计技术全景与实战指南
  • Chinese-LLaMA-Alpaca-2:从原理到实践,打造本地化中文大语言模型
  • Python自动化构建个人抖音技能库:合规爬虫与内容管理实践
  • 免费 IP 地址查询 API 接入实战_街道级归属接口调用与封装_ip geolocation api
  • Taotoken的TokenPlan套餐如何帮助个人开发者更可控地规划AI支出
  • 技术团队招聘与解雇实践:从Hire Slow Fire Fast到慧招快炒
  • 从零到一:在VS2019中高效部署OpenCV开发环境
  • Rust AI代理引擎hermes-rs:架构解析与高性能实践指南
  • 认知神经科学研究报告【20260045】
  • 算法复杂度的实验估算与误差分布建模的技术7
  • DistillGaze:基于视觉基础模型的轻量化视线追踪技术解析
  • Godot引擎AI集成:基于MCP协议实现智能游戏开发助手
  • AI驱动的前沿前端技术栈深度解析:从模型能力到UI封装的完整生命周期
  • Visual Studio AI助手深度集成:提升.NET开发效率的实战指南
  • AI+布局引擎:用excalidraw-architect-mcp智能生成专业架构图
  • HCCS:整数优化的Transformer注意力Softmax替代方案
  • AI网关架构解析:统一管理多模型API,提升服务治理与性能
  • KMS_VL_ALL_AIO:基于微软官方协议的系统激活工具技术解析
  • 把 GPT-4 塞进你的开发机:RAGFlow + Ollama 本地知识库从单机到集群的工程落地全指南
  • ThunderAI:用大语言模型插件打造智能邮件工作流
  • Vue3 路由守卫详解:全局守卫、路由独享守卫、组件内守卫
  • 本地化部署大语言模型:从量化到推理的完整实践指南
  • OpenAI Cookbook中文版:AI应用开发实战指南与工程化实践
  • 基于视觉AI的游戏自动化智能体Giclaw:原理、部署与应用实践
  • 一文讲透 ReAct:推理与行动交替的智能体范式
  • 星期天实训内容
  • 告别YAML诅咒:用LLM自动生成可验证CD流水线(附奇点大会开源Schema v2.1)
  • 键盘驱动光标:fly-cursor-free 桌面效率工具深度解析与实践