본문 바로가기
DevOps/AWS

EC2) org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/fragment/fragment]

by 어렵다어려웡 2021. 6. 11.

드디어 성공적으로 EC2 서버에 배포를 했습니다..

그런데 여기서 템플릿관련 에러가 나타났습니다..

실제 EC2 서버에서 나타난 에러로그를 따진 못했지만 우선 서버에서 배포했을때는

경로에 대해서 또 다른 설정을 해줘야하는지 고민이 생겼습니다.

왜냐하면 이전에 스프링 레거시 프로젝트를 배포할 때는 WAR파일이 였기 때문에 톰캣에서

따로 서버의 경로를 설정해줘야했기떄문입니다..

 

그러다가 index.html에서 코드를 확인해본 결과 조금 다른 부분에서 에러가 난 것이 확인되었습니다.

에러코드를 조금 줄여서 적어보면

index.html - line 6 - 11

해당 코드의 라인을 따라 들어가보면 특이하게 Thymeleaf 문법에 대한 에러인것이 확인되었습니다.

즉 th 문법을 사용할수 없는 것처럼 에러가 나타난것이죠.

<!DOCTYPE html>
<html lang="en"
      xmlns:th = "http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
// th:replace 라인의 에러
<th:block th:replace="~{fragment/fragment :: setBody(~{ :: body})}">
    <th:block th:fragment="body">

     <div sec:authorize="isAuthenticated()">
         <div>
             name : <span sec:authentication="principal.member"></span>
         </div>
     </div>

몇분 정도 감을 못잡다가 이번에 쉘 스크립트를 작성하면서 겪었던 부분이 문득 생각났습니다.

 

쉘스크립트를 작성할 때 '=' 을 사용할 경우 반드시 붙여서 작성해야 한다는 점이였습니다.

예를 들면  REPOSITROY=/home/ec2-user/ -> 이런식으로 명칭과 값을 붙여서 작성해야 했는데,

해당 코드를 들여다 보면 띄워져 있는 것을 알수 있었습니다.

 

<!DOCTYPE html>
<html lang="en"
      xmlns:th = "http://www.thymeleaf.org"   // <= 이 라인
      xmlns:sec="http://www.thymeleaf.org/extras/spring-security">

 

그래서 해당 코드를 붙여서 작성한 뒤에 서버에 붙인뒤 다시 테스트를 해봤습니다.

 

역시나 성공했습니다..

 

코드를 작성할때는 저렇게 띄어서 작성하는 경우가 개인적으로 많은데

좀더 조심하는 계기가 되었네요..

'DevOps > AWS' 카테고리의 다른 글

AWS S3) S3를 이용한 파일 불러오기  (0) 2021.06.23
EC2) 서버 도메인 OAuth2.0에 등록  (0) 2021.06.11
./gradlew test 실패 원인..  (0) 2021.06.11
./gradlew test 실패 이후 2번째  (0) 2021.06.10
EC2 - ./gradlew test 실패  (0) 2021.06.09