@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); }