작업 상태

- 새로운 페이지 작업중이었습니다.

- 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/ 디렉토리에서 템플릿 파일을 찾게 됩니다.

작업 상태

thymeleaf로 작업을 진행하던 중 다른 곳에서 가져온 코드를 사용하던 페이지에 복사 붙여넣기 하고 발생했습니다..

 

붙여넣은 일부분입니다.

<select th:name="'toblog-'+${category.id}" class="border border-gray-300 p-2 rounded-lg">  

 

에러 메시지 

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates//admin/working/edit.html]")] with root cause
org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'id' cannot be found on null


원인

-  admin/working/edit.html] 여기까지 관련 template 파일은 찾았다는 이야기 이고 여기서 변환중 에러가 발생했다는 메시지 입니다.

- SpelEvaluationException: ${category.id}" <-- 여기의 category가 이미 null 이라 id를 찾을수 없다는 말입니다.

 

처리

- 새로 붙인 관련 객체의 변수로 바꾸고 해결됐습니다.

<select th:name="'toblog-'+${working.id}" class="border border-gray-300 p-2 rounded-lg">  


참고

Property or field 'id' cannot be found on null

null에서 'id' 속성이나 필드를 찾을 수 없습니다.

+ Recent posts