Swagger2异常:Illegal DefaultValue null for parameter type integer
是这样的,在一个项目中使用到了Swagger2用作API文档以及接口测试工具,但是在开发完对应的后端接口后,其中有一个是分页查询的接口,大致代码如下:
@ApiOperation("分页查询用户信息")
@GetMapping("/getPage/{pageNum}/{pageSize}")
public Result<Object> getUsersByPage(
@ApiParam(name = "pageNum", value = "当前页码", required = true) // example = "1"
@PathVariable Long pageNum,
@ApiParam(name = "pageSize", value = "每页记录数", required = true) // example = "1"
@PathVariable Long pageSize,
@ApiParam(name = "userVo", value = "条件查询对象", required = false)
@RequestBody(required = false) UserQueryVo userQueryVo){
Page<User> page = new Page<>(pageNum, pageSize);
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(userQueryVo.getName()), User::getName, userQueryVo.getName())
.eq(userQueryVo.getLevel() != null, User::getLevel, userQueryVo.getLevel())
.ge(userQueryVo.getJoinDateBegin() != null, User::getJoinDate, userQueryVo.getJoinDateBegin())
.le(userQueryVo.getJoinDateEnd() != null, User::getJoinDate, userQueryVo.getJoinDateEnd());
Page<User> pageModel = userService.page(page, queryWrapper);
return Result.success(pageModel);
}
http://localhost:8080/swagger-ui.html
Illegal DefaultValue null for parameter type integer
翻译过来就是:非法默认值参数类型整数的空值
问题分析
通过观察报错抛出的异常是AbstractSerializableParameter
类中的getExample()
方法,源码如下:
@JsonProperty("x-example")
public Object getExample() {
if (this.example == null) {
return null;
} else {
try {
if ("integer".equals(this.type)) {
return Long.valueOf(this.example);
}
if ("number".equals(this.type)) {
return Double.valueOf(this.example);
}
if ("boolean".equals(this.type) && ("true".equalsIgnoreCase(this.example) || "false".equalsIgnoreCase(this.defaultValue))) {
return Boolean.valueOf(this.example);
}
} catch (NumberFormatException var2) {
LOGGER.warn(String.format("Illegal DefaultValue %s for parameter type %s", this.defaultValue, this.type), var2);
}
return this.example;
}
}
不难看出,是类型转换时发生的错误,也就是有个默认值是空字符串的变量转换成Integer类型时异常。
也就是说如果实体属性类型是Integer,就把 example 转为 Long 类型,而example默认为 " " ,导致转换错误。
Swagger 2.9.2
Swagger3.0 从0到1快速入门! (imyjs.cn)
问题解决
通过在网上查找,主要是有两种解决方案。
方案一
在方法参数@ApiParam
注解中,显示指出example 值为某一数值,使其不为“ ”
@ApiParam(name = "pageNum", value = "当前页码", required = true, example = "1") //
@ApiParam(name = "pageSize", value = "每页记录数", required = true, example = "1") //
导入对应的两个jar包,在pom文件中添加如下坐标:
<!--swagger ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<!--增加两个配置-->
<!--illegal defaultValue null for param type integer-->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.22</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.22</version>
</dependency>
然后刷新Maven依赖,重启项目访问,问题解决。
编程那点事儿
本站为非盈利性站点,所有资源、文章等仅供学习参考,并不贩卖软件且不存在任何商业目的及用途,如果您访问和下载某文件,表示您同意只将此文件用于参考、学习而非其他用途。
本站所发布的一切软件资源、文章内容、页面内容可能整理来自于互联网,在此郑重声明本站仅限用于学习和研究目的;并告知用户不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
如果本站相关内容有侵犯到您的合法权益,请仔细阅读本站公布的投诉指引页相关内容联系我,依法依规进行处理!
作者:理想
链接:https://www.imyjs.cn/archives/1050
本站所发布的一切软件资源、文章内容、页面内容可能整理来自于互联网,在此郑重声明本站仅限用于学习和研究目的;并告知用户不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
如果本站相关内容有侵犯到您的合法权益,请仔细阅读本站公布的投诉指引页相关内容联系我,依法依规进行处理!
作者:理想
链接:https://www.imyjs.cn/archives/1050
THE END
0
二维码


Swagger2异常:Illegal DefaultValue null for parameter type integer
问题背景
是这样的,在一个项目中使用到了Swagger2……

文章目录
关闭

共有 0 条评论