카테고리 없음

spring boot 이메일 중복 체크

최종군 2024. 11. 8. 23:03

@GetMapping("/checkEmail")
public boolean emailCheck(String email){
Users emailCheck = userService.emailCheck(email);
if(emailCheck != null) {
return true; 
}
return false;
}

 

나는 boolean 타입으로 ajax응답을 처리를 하려고 했다. 

하지만 조회해본 결과 

 

 

서 java.lang.IllegalArgumentException: Unknown return value type: java.lang.Boolean

라는 오류가 발생했다. 

 

그 이유는 Spring MVC는 기본적으로 boolean 반환타입을 HTTP 응답으로 처리를 할 수 없다고 한다. 

 

기존 컨트롤러 

 

@GetMapping("/checkEmail")
public boolean emailCheck(String email){
Users emailCheck = userService.emailCheck(email);
if(emailCheck != null) {
return true; 
}
return false;
}

 

변경 후 

 

@GetMapping("/checkEmail")
@ResponseBody
public String emailCheck(String email){
Users emailCheck = userService.emailCheck(email);
if(emailCheck != null) {
return "사용불가"; 
}
return "사용가능";
}

 

 

Spring Boot 애플리케이션에서

@Controller 또는 @RestController 메서드가 반환한 문자열을 템플릿 이름으로

해석하려고 시도하는 과정에서 발생한다. 

 

String 타입으로 반환을 할 때는, 

Thymeleaf가 이 값을 템플릿 이름으로 해석하여 사용불가.html 파일을 찾으려고 시도한다.

그러나 해당 이름의 템플릿 파일이 없으므로 오류가 발생한 것이다. 

 

해결 방법으로는

@ResponseBody를 사용하거나 

 

ResponseEntity<String>

ResponseEntity.ok(result);

을 사용하는 방법이 있다. 

@GetMapping("/checkEmail") public ResponseEntity<String> emailCheck(@RequestParam String email) { Users emailCheck = userService.emailCheck(email); String result = (emailCheck != null) ? "사용불가" : "사용가능"; return ResponseEntity.ok(result); }