問題現象:
今日のswaggerの学習プロセスで、swaggerUIページを開始した後、バックグラウンドでエラーが報告されました。
java.lang.NumberFormatException:入力文字列の場合: ""
問題分析:
このエラーは、整数データ型の形式が異常であることを意味します。空の文字列が整数データ型に渡され、エラーが発生します。
オンライン情報を参照することにより、次のことを知ることができます。
これは、springfox-swagger2(2.9.2)がswagger-models(1.5.20)に 依存して いるため です。
そして、このバージョンのSwaggerは、空の文字列に割り当てられたデフォルトのChina-AfricaStringプロパティのエンティティクラスタイプになります。
したがって、swagger-models依存関係の上位バージョンを手動で追加する必要があります!!!!!!
したがって、swaggerUIページを開始した後、この時点でのエンティティクラスの非String属性にはデフォルト値がなく、NumberFormatException:入力文字列の場合: ""が表示されます。
解決:
<!--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>-->
再起動します。エラーは発生しません。