问题现象:
今天在学习swagger的过程中,启动swaggerUI页面后,后台报错:
java.lang.NumberFormatException: For input string: ""
问题分析:
这个报错的意思是整型数据类型格式异常: 传入了空字符串给整型数据类型,导致该错误.
通过查阅网上资料可知:
这是因为 springfox-swagger2(2.9.2) 依赖于 swagger-models(1.5.20) ;
而该版本的swagger会将实体类中非String类型的属性默认赋值为空字符串.
因此需要手动添加更高版本的 swagger-models依赖!!!!!!
所以在启动swaggerUI页面后,此时的实体类非String属性由于没有默认值,就会出现NumberFormatException: For input string:"".
解决方法:
<!--swaggerUI-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
添加 swagger-models(1.5.21)的依赖即可:
<!--swaggerUI-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!--规范model实体类注解-->
<!--如果不加,则当实体类非String属性没有默认值时,会出现NumberFormatException: For input string:"",
这是因为springfox-swagger2(2.9.2)依赖于swagger-models(1.5.20)
该版本的swagger只判断了null没有判断空字串符
所以会将实体类中非String类型的属性默认赋值为空字符串;
而1.5.21版本之后新增了空串判断,所以就不会有该问题了-->
<!--<dependency>-->
<!--<groupId>io.swagger</groupId>-->
<!--<artifactId>swagger-models</artifactId>-->
<!--<version>1.5.21</version>-->
<!--</dependency>-->
重新启动,不再报错: