Git Code 버전 : 0.0.9-SNAPSHOT
블로그에 Google OAuth2 개발 환경 구축 글을 올리고, 회사 일정으로 인해 Code 관련 글을 올리지 못한 1달여 시간이 지나버렸다. 개발 환경 구축 글을 올릴 당시 관련 코드는 구현해 Git에 0.0.8 버전으로 push 해두었으나 1달 지난 뒤 다시 실행해 보니 아래와 같은 에러가 발생하였다.
ERROR 64942 --- [nio-8080-exec-3] cat].[localhost].[/].[dispatcherServlet] :
Servlet.service() for servlet [dispatcherServlet] in context with path []
threw exception [Request processing failed: java.lang.IllegalArgumentException:
Name for argument of type [int] not specified, and parameter name information not available via reflection.
Ensure that the compiler uses the '-parameters' flag.] with root cause
원인은 Spring MVC 컨트롤러에서 파라미터 이름정보를 찾을 수 없어서 발생하는 문제로 상장 회사 정보 조회, 주가 시세 조회시 UI에서 호출하는 함수에 파라미터 이름 정보를 찾을 수 없는 문제로 발생하였다.
해당 컨트롤러 함수를 아래와 같이 @RequestParam 어노테이션에 파라미터 이름을 지정하여 해결하였다.
- InfoController.java
// 수정 전 코드
public ResponseEntity<JsonNode> saveCompanyList(
@RequestParam int numOfRows,
@RequestParam int pageNo) {
// 수정 후 코드
public ResponseEntity<JsonNode> saveCompanyList(
@RequestParam("numOfRows") int numOfRows,
@RequestParam("pageNo") int pageNo) {
- StockController.java
// 수정 전 코드
public ResponseEntity<JsonNode> getStockPriceInfo(
@RequestParam String itmsNm,
@RequestParam int pageNo,
@RequestParam int numOfRows) {
// 수정 후 코드
public ResponseEntity<JsonNode> getStockPriceInfo(
@RequestParam("itmsNm") String itmsNm,
@RequestParam("pageNo") int pageNo,
@RequestParam("numOfRows") int numOfRows) {