본문 바로가기
개발/에러노트

swagger-ui 에러 java.lang.NumberFormatException: For input string: ""

by onethejay 2022. 5. 10.
728x90

Swagger-ui 상위 버전 사용시 나타나는 java.lang.NumberFormatException: For input string: "" 에러에 대해 댓글로 정리해두신 분이 있어서 가져와 정리했습니다.

 

출처 : https://lemontia.tistory.com/1000#comment12661887 댓글

----------------------------------------------------------------------------------------------------------------------------------

 

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

이 에러를 해결하기 위해 다운 그레이드를 하는 것이 아니라 버전업 된 명세에 맞춰 사용해야합니다.

위 오류는 Integer 나 int 등 숫자(Number) 타입으로 된 필드나 매개변수에서 발생하는 것으로,
컨트롤러 내 메서드의 ApiImplicitParam 속성 중 example 속성에 값을 주면 됩니다.
그냥 간단히 @ApiImplicitParam(example = "1") 로 추가합니다.

코드로 예를 들면

@Getter
@ToString
public class RequestMemberSignup {
	@ApiModelProperty(value = "이름", required = true)
	private String name;

	@ApiModelProperty(value = "나이")
	private int age; //int 로 변경
}

 

age가 int 타입일 때
age가 String 이면 경고가 뜨지 않습니다. 그래서 타입을 int 로 변경해서 위 경고가 발생하게 만들었고, 이때 해결 방법은 아래 코드에 작성하였습니다.

@ApiOperation(value = "회원가입")

@ApiImplicitParams({
	@ApiImplicitParam(name = "name", value = "이름입력", required = true, dataType = "string", paramType = "query", defaultValue = ""),
	@ApiImplicitParam(name = "age", value = "나이입력", required = true, example="10") // -> example 만 추가하면 끝!
})
@PostMapping("/swagger/signup")
public ResponseSwaggerPage1 signup(@RequestBody RequestMemberSignup request) {
	System.out.println("request = " + request);
	return new ResponseSwaggerPage1("success", "성공");
}

example 필드에는 어떤 숫자 형태가 들어가나 예제 값을 적어주면 됩니다.

 

728x90

댓글