작업 상태
- 새로운 페이지 작업중이었습니다.
- controller 메소드 생성 후 페이지를 호출하던중 발생했습니다.
- 작업을 했던곳이어서 페이지가 존재할것이라고 생각하고 결과 페이지 확인을 안했습니다.
@GetMapping("/admin/workings/todos/undone")
public String unDoneList(Model model) {
List<Todo> todos = todoService.findByIsCompleted("N");
model.addAttribute("todos", todos);
return "todo/list";
}
에러 메시지 .[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.thymeleaf.exceptions.TemplateInputException: Error resolving template [todo/list], template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [todo/list], template might not exist or might not be accessible by any of the configured Template Resolvers
원인
일반적으로 다음과 같은 경우에 발생할 수 있습니다.
- 요청한 템플릿이 프로젝트에서 실제로 존재하지 않는 경우. <-- 실제로 존재 하지 않았습니다.
- 요청한 템플릿의 경로가 잘못 지정된 경우.
- Thymeleaf 구성이 올바르게 구성되지 않은 경우.
처리
@GetMapping("/admin/workings/todos/undone")
public String unDoneList(Model model) {
List<Todo> todos = todoService.findByIsCompleted("N");
model.addAttribute("todos", todos);
return "working/todolist"; //템플릿페이지 경로변경
}
템플릿 생성 : src/main/resources/templates/working/todolist.html
참고
Thymeleaf 템플릿 엔진에서 시작 기본 위치는 src/main/resources/templates/ 입니다.
예를 들어,
index.html 파일이 src/main/resources/templates/ 디렉토리에 있다면,
Thymeleaf는 index.html 파일을 찾을 수 있습니다.
따라서, 스프링 부트 프로젝트에서 Thymeleaf를 사용할 때,
src/main/resources/templates/ 디렉토리에 HTML 파일을 저장하면,
이 파일들은 자동으로 Thymeleaf가 처리할 수 있는 템플릿 파일이 됩니다.
스프링 부트에서는 spring.thymeleaf.prefix 속성을 사용하여 시작 기본 위치를 변경할 수 있습니다.
이 속성을 사용하여 다른 디렉토리에서 템플릿 파일을 찾을 수 있습니다.
templates 디렉토리가 아닌 views 디렉토리에서 템플릿 파일을 찾으려면
application.properties 파일에서 spring.thymeleaf.prefix 속성을 설정할 수 있습니다.
spring.thymeleaf.prefix = classpath:/views/
Thymeleaf는 src/main/resources/views/ 디렉토리에서 템플릿 파일을 찾게 됩니다.