java.lang.NumberFormatException: For input string: ““

Swagger 问题修复说明

问题描述

访问Swagger文档时出现以下错误:

Illegal DefaultValue null for parameter type integer java.lang.NumberFormatException: For input string: ""

问题原因

Swagger在解析@RequestParam注解时,对于Long类型参数的defaultValue处理有兼容性问题,特别是在以下情况:

  1. Long类型参数使用defaultValue

    @RequestParam(defaultValue = "1") Long current
  2. Swagger版本兼容性

    • SpringFox 3.0.0 对Long类型的默认值解析存在bug
    • 在序列化为JSON时会尝试将空字符串转换为Long类型

解决方案

方案1:修改参数类型(已采用)

将Long类型参数改为Integer类型:

// 修改前 @RequestParam(defaultValue = "1") Long current // 修改后 @RequestParam(defaultValue = "1") Integer current

优点:

  • 简单直接,兼容性好
  • Integer类型足够满足分页参数需求
  • 不需要额外配置

修改内容:

@GetMapping("/page") public R<IPage<ChatRecord>> pageList( @ApiParam(value = "当前页", example = "1") @RequestParam(defaultValue = "1") Integer current, @ApiParam(value = "每页条数", example = "10") @RequestParam(defaultValue = "10") Integer size, // ... 其他参数 ) { // 转换为Long类型传给MyBatis-Plus Page<ChatRecord> page = new Page<>(current.longValue(), size.longValue()); // ... }

方案2:创建Swagger配置类(备用)

创建SwaggerConfig来处理类型替换:

@Configuration public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.OAS_30) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.hzys.controller")) .paths(PathSelectors.any()) .build() // 解决Long类型参数在Swagger中的显示问题 .directModelSubstitute(Long.class, String.class); } }

方案3:使用@ApiParam的example属性

为参数添加明确的示例值:

@ApiParam(value = "当前页", example = "1") @RequestParam(defaultValue = "1") Integer current

最佳实践

1. 分页参数推荐使用Integer

// ✅ 推荐:使用Integer @RequestParam(defaultValue = "1") Integer current @RequestParam(defaultValue = "10") Integer size // ❌ 不推荐:使用Long(可能有Swagger兼容问题) @RequestParam(defaultValue = "1") Long current @RequestParam(defaultValue = "10") Long size

2. 为所有参数添加示例值

@ApiParam(value = "当前页", example = "1") @RequestParam(defaultValue = "1") Integer current @ApiParam(value = "每页条数", example = "10") @RequestParam(defaultValue = "10") Integer size @ApiParam(value = "用户ID", example = "user001") @RequestParam(required = false) String userId

3. 统一的分页参数处理

创建通用的分页参数对象:

@Data @ApiModel("分页参数") public class PageParam { @ApiModelProperty(value = "当前页", example = "1") private Integer current = 1; @ApiModelProperty(value = "每页条数", example = "10") private Integer size = 10; public Page<T> toPage() { return new Page<>(current.longValue(), size.longValue()); } } // 在Controller中使用 @GetMapping("/page") public R<IPage<ChatRecord>> pageList(PageParam pageParam, @RequestParam(required = false) String userId) { Page<ChatRecord> page = pageParam.toPage(); // ... }

验证修复

1. 重启应用

重启Spring Boot应用。

2. 访问Swagger文档

访问:http://localhost:8091/swagger-ui/index.html

3. 检查分页接口

找到"聊天记录管理"下的"分页查询聊天记录"接口,确认:

  • 参数显示正常
  • 没有错误信息
  • 可以正常测试

4. 测试接口

# 测试分页接口 curl "http://localhost:8091/api/chat/record/page?current=1&size=10"

其他可能的Swagger问题

1. 枚举类型显示问题

如果枚举在Swagger中显示有问题,可以添加:

@ApiModelProperty(value = "消息类型", example = "1", allowableValues = "1,2,3") private Integer msgType;

2. 日期时间格式问题

对于日期时间字段:

@ApiModelProperty(value = "反馈时间", example = "2026-01-16 10:00:00") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private String feedbackTime;

3. 文件上传参数问题

对于文件上传:

@ApiParam(value = "上传文件", required = true) @RequestParam("file") MultipartFile file

相关配置文件

已创建的文件

  1. SwaggerConfig.java- Swagger配置类

    • 位置:src/main/java/com/hzys/base/config/SwaggerConfig.java
    • 作用:统一配置Swagger,处理类型兼容问题
  2. 修改的文件

    • ChatRecordController.java- 修改分页参数类型

Swagger依赖

确认pom.xml中有正确的Swagger依赖:

<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>

总结

修复内容

✅ 将Long类型分页参数改为Integer类型
✅ 添加了@ApiParam的example属性
✅ 创建了SwaggerConfig配置类
✅ 提供了最佳实践建议

预防措施

  1. 避免在@RequestParam中使用Long类型的defaultValue
  2. 为所有API参数添加example示例值
  3. 统一使用Integer类型处理分页参数
  4. 定期测试Swagger文档的可用性

如果问题仍然存在

  1. 检查Swagger版本兼容性
  2. 查看控制台是否有其他错误信息
  3. 尝试降级SpringFox版本到2.x
  4. 考虑使用SpringDoc替代SpringFox

参考资料

  • SpringFox官方文档
  • Swagger注解使用指南
  • SpringBoot集成Swagger最佳实践



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1178126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Interspeech 2022:跨学科研究的融合与演进

Interspeech 2022&#xff1a;跨学科研究的增长 循环训练语音合成与语音识别模型、利用语言理解来改善语音韵律&#xff0c;这些只是语音相关领域交叉融合的几个例子。当 Penny Karanasou 在 2010 年首次于 Interspeech 上发表论文时&#xff0c;她还是一名计算机科学的博士生&…

2026年最新敏感肌保湿修复产品测评:高口碑屏障修护与长效锁水极简成分标杆推荐 - 速递信息

问题定义:敏感肌保湿的三大核心痛点当代敏感肌人群正面临严峻挑战:《2024中国敏感肌健康白皮书》显示,38%国人存在敏感肌问题,其中62%因产品刺激导致泛红、瘙痒反复发作;普通保湿产品仅提供表面补水,无法修复受损…

银行网页如何通过vue.js实现大文件文件夹上传及分块?

北京XX软件公司涉密项目大文件传输解决方案&#xff08;基于SM4国密算法&#xff09; 一、项目背景与需求分析 作为服务政府及军工领域的软件企业&#xff0c;我司当前涉密项目需实现以下核心需求&#xff1a; 安全传输&#xff1a;10GB级文件/文件夹的SM4加密传输&#xff…

工程建筑网页如何通过js实现文件夹上传及断点续传?

咱们的客户&#xff0c;那可是汽车制造行业里的领军企业&#xff0c;妥妥的头部大佬。他们自有一套极为成熟的业务系统&#xff0c;这套系统就像他们的左膀右臂&#xff0c;每日不辞辛劳地处理着各类繁杂事务。然而&#xff0c;随着行业竞争愈发白热化&#xff0c;技术迭代也是…

导师严选8个AI论文工具,专科生搞定毕业论文+格式规范!

导师严选8个AI论文工具&#xff0c;专科生搞定毕业论文格式规范&#xff01; AI 工具如何成为论文写作的得力助手 在当前学术环境日益严格的背景下&#xff0c;越来越多的继续教育学生开始借助 AI 工具来辅助论文写作。这些工具不仅能够帮助学生高效完成内容创作&#xff0c;还…

详细介绍:3ds Max渲染核心:高光追(Embree)与光线追踪(Ray Trace)

详细介绍:3ds Max渲染核心:高光追(Embree)与光线追踪(Ray Trace)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

金融行业网页如何用vue2实现文件夹上传及秒传功能?

大文件上传解决方案 各位同行大佬们好&#xff0c;作为一个在广东摸爬滚打多年的前端"老油条"&#xff0c;最近接了个让我差点秃顶的项目——20G大文件上传系统&#xff0c;还要兼容IE9&#xff01;这感觉就像让我用竹篮子去打水还要不漏一样刺激… 需求分析&#…

吐血推荐!9款一键生成论文工具测评:本科生毕业论文救星

吐血推荐&#xff01;9款一键生成论文工具测评&#xff1a;本科生毕业论文救星 2026年学术写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的学术写作工具进入市场&#xff0c;为本科生毕业论文的撰写提供了便捷支持。然…

农业大数据平台如何用百度UE优化WORD表格导入功能?

企业级富文本编辑器Word/公众号内容导入解决方案 项目需求分析 作为海南某国企项目负责人&#xff0c;我们正在为后台管理系统寻求一个强大的富文本编辑器扩展解决方案&#xff0c;主要需求包括&#xff1a; 核心功能需求&#xff1a; Word内容粘贴&#xff08;带图片自动上传…

2026年目前知名的智能货架源头厂家哪家好,重载货架/中型货架/货架定制/抽屉式模具架/背网货架,智能货架源头厂家找哪家 - 品牌推荐师

随着工业4.0与智慧物流的加速推进,智能货架作为仓储自动化的核心载体,正从单一存储功能向“感知-决策-执行”一体化演进。据第三方机构统计,2025年国内智能货架市场规模突破120亿元,年复合增长率达18%,但市场碎片…

技术学校品牌企业哪家好?成都万通未来高级技工学校了解一下 - 工业品牌热点

在职业教育蓬勃发展的当下,选择一所服务优质、品牌可靠的技术学校,是无数学生和家长实现技能成才梦想的关键一步。面对市场上琳琅满目的技术学校,如何精准找到贴合需求、实力过硬的品牌?以下结合不同办学特色,为你…

教育行业如何通过UEDITOR插件实现PPT动画转存为网页?

CMS企业官网Word导入功能开发实录 需求分析与技术评估 客户核心需求 支持Office文档(Word/Excel/PPT/PDF)导入并保留完整样式实现Word内容一键粘贴功能公式处理(LaTeX/MathType)转换MathML图片自动上传至阿里云OSS高龄用户友好型操作设计 技术栈现状 前端&#xff1a;Vue2…

医院HIS系统如何集成百度编辑器实现PDF病历跨平台编辑?

Word文档导入与粘贴功能解决方案 项目背景与需求分析 作为安徽某IT公司的.NET工程师&#xff0c;我最近负责在企业网站后台管理系统中增加Word粘贴和文档导入功能。客户的核心需求是&#xff1a; Word粘贴功能&#xff1a;直接从Word复制内容到网站编辑器&#xff0c;图片自…

2026四川气体探测器供货商排行榜,探寻气体探测器哪家性价比高 - 工业品牌热点

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为企业选型提供客观依据,助力精准匹配适配的气体探测器服务伙伴。 TOP1 推荐:江苏吉华电子科技有限公司 推荐指数:★★★★★ | 口碑评分:高性价…

2026年免费音效素材下载网站最新动态

2026年了,哪些我们常用的音效素材下载网站有什么变化呢?小编就带大家梳理一下。强烈推荐CC音效库,导演和剪辑师本地自建音效库的网络共享版,更懂使用者需求,完全免费。不需要购买会员。之前叫猫脸音效库,最近改名…

2026年1月15万左右城市SUV实力排行榜:基于长期口碑与实测数据的TOP5权威榜单揭晓 - 品牌推荐

2026年15万左右城市SUV推荐榜单:谁能成为家庭出行的“均衡之选”? 当购车决策从单纯对比配置表,转向综合考量“日常通勤成本、家庭空间需求、长期可靠性与科技体验”的复杂平衡时,一款车的价值便不再取决于某个单项…

2026年做得好的户外led大屏广告代理公司有哪些,地铁广告/电视台广告/公交广告,户外led大屏广告代理公司推荐 - 品牌推荐师

随着城市数字化进程加速,户外LED大屏广告凭借高曝光、强视觉冲击力及精准人群触达能力,成为品牌营销的核心阵地之一。然而,面对分散的媒体资源、复杂的投放逻辑及技术迭代压力,广告主如何选择兼具资源整合能力与数…

Playwright多语言回归测试框架对比

‌一、多语言支持的核心价值‌ 在全球化研发体系中&#xff0c;多语言测试能力已成为DevOps流水线的刚需。Playwright通过统一的API层实现对TypeScript/Node.js、Java、Python、.NET四大语言的支持&#xff0c;其设计哲学可概括为&#xff1a; ‌协议统一‌&#xff1a;所有语…

智能API回归测试的核心挑战与解决路径

在微服务架构普及的当下&#xff0c;API回归测试面临三大核心痛点&#xff1a; ‌高频迭代的维护成本‌&#xff1a;接口变更导致70%测试用例失效&#xff08;数据来源&#xff1a;SmartBear 2025行业报告&#xff09;&#xff0c;需频繁重构测试脚本。‌多环境验证复杂性‌&a…

详细介绍:我为什么当博主

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …