[ERROR/백엔드] Circular view path [boards]: would dispatch back to the current handler URL [/boards] again. Check your ViewResolver setup!

Hyun·2024년 2월 7일
0

에러 및 문제해결

목록 보기
11/11

에러의 주 내용은 다음과 같다.

jakarta.servlet.ServletException: Circular view path [board]: would dispatch back to the current handler URL [/board] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

view resolver 의 경우 CSR(서버 사이드 렌더링)에서 사용된다. 따라서 CSR(클라이언트사이드 렌더링)의 경우 view resolver가 사용되지 않는다. CSR의 경우 HTTP body에 필요한 데이터를 담아서 클라이언트에 넘겨버리기 때문이다.

그러므로 클라이언트사이드 렌더링(ex 리액트)을 사용할때 서버 측에서 @Controller를 사용하면 뷰 렌더링을 위해 사용하는 view resolver가 호출되어 에러가 발생한다. 따라서 클라이언트사이드 렌더링을 사용할 경우, 서버에서는 데이터만을 넘기기 위한 @RestController 를 사용해야한다.

수정 전

@Controller
@CrossOrigin("http://localhost:3000")
public class BoardController {

    private final BoardRepo boardRepo;

    public BoardController(BoardRepo boardRepo) {
        this.boardRepo = boardRepo;
    }

   	...
    
    @GetMapping("/board")
    List<Board> getAllBoards(){
        System.out.println("/board getMapping");
        return boardRepo.findAll();
    }
}

수정 후

@RestController
@CrossOrigin("http://localhost:3000")
public class BoardController {

    private final BoardRepo boardRepo;

    public BoardController(BoardRepo boardRepo) {
        this.boardRepo = boardRepo;
    }

   	...
    
    @GetMapping("/board")
    List<Board> getAllBoards(){
        System.out.println("/board getMapping");
        return boardRepo.findAll();
    }
}
profile
better than yesterday

0개의 댓글