본문 바로가기
개발 공부하면서 오류 해결

[THYMELEAF][http-nio-8080-exec-1] Exception processing template "detail": An error happened during template parsing (template: "class path resource ") 오류 해결

by chogigang 2023. 3. 29.

게시판 작업 도중 thymelef 오류를 받았습니다.

 

2023-03-29 08:51:16.958 ERROR 19936 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine             : [THYMELEAF][http-nio-8080-exec-1] Exception processing template "detail": An error happened during template parsing (template: "class path resource [templates/detail.html]")

 

 

 

해당 오류는 tymelef  에서 서버단으로 db를 끌어올때 데이터 베이스상 뭔가 비어있으면 오류가 걸립니다.

 

예를들어 Entity 작성중 필드가  프론트단이랑 일치하지않는다거나 레포지 토리에서 쿼리문이 이상하거나 DTO나 AO 같은곳에서 꼬이거나하면 생길수도 있습니다.

 

그다음으로 자주 생기는 문제는 

th:each 문 문법 오류 로 발생하는 문제 가 많습니다 오타, 변수 리스트 잘못설정 등등 있습니다.

th:if  문법을 잘못사용하면 해당 오류가 발생합니다. 아직 구현하지도 않은 것을 미리 집어 넣으면 가끔식 발생합니다.

(이건 현제 제가 발생했던 오류 입니다.)

 

 

 

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>detail</title>
  <!-- jquery cdn -->
  <script src="https://code.jquery.com/jquery-3.6.3.min.js" integrity="sha256-pvPw+upLPUjgMXY0G+8O0xUf+/Im1MZjXxxgOcBQBXU=" crossorigin="anonymous"></script>
</head>
<body>
<table>
  <tr>
    <th>id</th>
    <td th:text="${board.id}"></td>
  </tr>
  <tr>
    <th>title</th>
    <td th:text="${board.boardTitle}"></td>
  </tr>
  <tr>
    <th>writer</th>
    <td th:text="${board.boardWriter}"></td>
  </tr>
  <tr>
    <th>date</th>
    <td th:text="${board.boardCreatedTime}"></td>
  </tr>
  <tr>
    <th>hits</th>
    <td th:text="${board.boardHits}"></td>
  </tr>

  <tr>
    <th>contents</th>
    <td th:text="${board.boardContents}"></td>
  </tr>


  <tr th:if="${board.fileAttached == 1}">
    <th>image</th>
    <td td th:each="fileName: ${board.storedFileName}">
      <img th:src="@{|/static/${board.storedFileName}|}" alt="" width="200" height="200">
    </td>
  </tr>



</table>
<button onclick="listReq()">목록</button>
<button onclick="updateReq()">수정</button>
<button onclick="deleteReq()">삭제</button>


</body>
<script th:inline="javascript">
 const listReq = () => {
        console.log("목록 요청");
        const page = [[${page}]];
        location.href = "/board/paging?page="+page;
    }
    const updateReq = () => {
        console.log("수정 요청");
        const id = [[${board.id}]];
        location.href = "/board/update/" + id;
    }
    const deleteReq = () => {
        console.log("삭제 요청");
        const id = [[${board.id}]];
        location.href = "/board/delete/" + id;
    }

</script>
</html>

 

 

해당 로직은 게시판 상세조회 html 입니다.

저는 파일 올리기 구현을 아직 하기도전에 미리 프론트 단에 입력을 해놨습니다.

 

thif 를 삭제하고 다시 게시글을 조회했을때 

 

잘 나옵니다.

 

 

 

엔티티 랑 view db 필드 정보 일치 하는지 확인

th:each 문법을 사용할때 오타,변수 잘못선언 있는지 잘 확인

th:if 문도 잘못 사용하고 있지 않는지 

 

구현도 아직 안했는대 미리 추가 해놨는지 잘 확인해보시길 바랍니다.