팀 프로젝트에서 우리는 rest API 개발을 먼저 모두 끝내고 프론트를 구현하고 있다. rest API 구현을 하면서 기능이 잘 작동하는지는 이미 모두 테스트를 해봤기 때문에 사실 프론트 엔드 개발은 순탄하게 진행될거라고 생각했다. 기대와는 달리 처음 만들어보는 UI 화면은 하나 하나 공부해가며 만들다보니 시간이 훨씬 더 오래걸렸다.
상품 검색 부분의 UI를 구현하고 실행했는데 마주하게 된 오류이다.
Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "search"
내용을 봤을 때는 타입이 잘못되었다는 것 같았다. 하지만 타입이 잘 못 될만한 부분도 없었고, 타입이 잘 못 되었다면 rest API에서도 오류가 났을 것이다. 구글링을 한참 해본 결과
우리는 RequestParameter가 필요할 때 값을 바인딩하여 우리가 원하는 객체로 변환해주는 @ModelAttribute를 사용한다.
따라서 @AllArgsContructor로 모든 필드를 매개변수로 가지는 생성자를 만들어주거나 @Setter를 사용하여야(기본생성자는 자바가 자동으로 생성) @ModelAttribute가 정상적으로 작동할 수 있는 것이다.