안녕하세요 여러분!
2024년 새해가 밝았습니다.
길었던 1학기도 끝나고, 10기는 본격적인 프로젝트 기간에 접어들게 되었는데요,
향후 기사는 프로젝트 진행 중 누구나 겪을 수 있는 문제와 해결 방법에 대해 작성하려고 합니다!
저와 같은 문제로 고민하는 사람이 없길 바라며..
렛잇고
Request Param 오류
에러내용
java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.
-
[Error] Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.
첫 번째로 저희를 가장 많이 괴롭혔던 것은 바로 Spring의 Param 관련 오류였습니다.
다같이 동일한 파일을 사용해도 누구는 실행이 되고 누구는 위와 같은 에러가 발생하며 실행이 안되는 경우가 있었는데요.
심지어 프론트진의 컴퓨터에서만 발생하고 백엔드 담당자들의 컴퓨터에서는 발생하지 않는...
아주 악독한 오류였습니다.
원인
: Controller 작성 시 @RequestParam의 name 속성을 명시해주지 않음
@GetMapping("/index")
public String IndexMbc(@RequestParam String name, Model model) {
model.addAttribute("data", name);
return "index-template";
}
사실 정석적인 작성 방법은 아래와 같지만..
@GetMapping("/index")
public String IndexMbc(@RequestParam("name") String name, Model model) {
model.addAttribute("data", name);
return "index-template";
}
http parameter의 name 속성 이름이 변수 이름과 같으면 생략이 가능하게 되어 있기 때문에 name 없이 작성하였으나, 왜인지 오류가 발생한 것..!!
스프링 부트 3.2부터 매개변수의 이름을 인식하지 못하는 문제가 있다고 합니다
그럼 왜 백엔드측에서는 해당 오류가 발생하지 않았을까요?
현재 프론트진은 인텔리제이 CE, 백엔드진은 Ultimate를 사용중인데, CE의 경우 Ultimate와는 다르게 Spring Boot 통합 환경을 지원해주지 않기 때문에 Spring Boot를 실행시키는 방법에 차이가 있다고 합니다. 현재는 실행 방법에 따른 차이로 인한 오류로 추정 중!
해결 방법
1. 어노테이션(@RequestParam)과 ("name") 둘 다 작성
@GetMapping("/index")
public String IndexMbc(@RequestParam("name") String name, Model model) {
2. 어노테이션만 작성 시 & 어노테이션/이름 둘 다 미작성시 -parameters 옵션 추가
@GetMapping("/index")
public String IndexMbc(@RequestParam String name, Model model) {
@GetMapping("/index")
public String IndexMbc(String name, Model model) {
* 단, root 경로에 있는 out 폴더를 삭제 후 다시 컴파일을 진행해야 적용된다.
3. Gradle을 사용하여 빌드하기
1) build.gradle 파일에 아래 내용 추가
compileJava {
options.compilerArgs << '-parameters'
}
2) Build, Execution, Deployment > Build Tools > Gradle에서 Build and run using Gradle로 변경
이상, Param 관련 오류와 그 해결 방법에 대하여 알아보았습니다.
프로젝트하랴 취준하랴 정신없는 2학기에 접어든 만큼, 빠르게 문제를 해결하고 프로젝트를 끝마칠 수 있었으면 좋겠네요.
그럼 다들 화이팅!
'SSAFYcial' 카테고리의 다른 글
[SSAFYcial] 이게 왜 안됨? ②채팅 좀 읽게 해줘... 모바일 채팅방 UI/UX 개선기 (React + typescript) (12) | 2024.02.25 |
---|---|
[SSAFYcial] Zustand에 대해 알아보자 (1) | 2024.01.28 |
[SSA業탐구] 안드로이드 앱을 만드는 모바일 개발자편 (0) | 2023.12.24 |
[SSAFYcial] 1학기_종료_진짜최종.txt 관통프로젝트 후기 (0) | 2023.12.19 |
[SSA業탐구] 서버와 데이터베이스를 담당한다! 백엔드편 (0) | 2023.11.28 |