본문으로 바로가기
반응형



Thymeleaf를 사용하며 가장 불편한 점은 이렇다.


Thymeleaf가 결국 html을 well-formed XML로 변환하기 때문에 일반적인 습관으로 html을 작성할 때에 생각보다 많은 오류를 발생시킨다.

(예를 들면 input이나 link, meta tag 등에서 닫힘 태그를 주지 않는 경우)


이데 Thymeleaf는 Legacy HTML5 Mode를 지원 한다. (이 모드를 사용할 경우 제한되는 부분은 추후 다시 확인해 볼 필요가 있다.)



spring.thymeleaf.mode = HTML5 일 때


thymeleaf의 default mode는 html5이다.

이 상태에서  link 태그를 닫지 않고 아래와 같이 meta, link 태그를 선언한다.


<link href="css/bootstrap.min.css" rel="stylesheet">


그 뒤, 이 html5 페이지에 접근하게 되면, 에러 페이지가 뜨며, 로그를 보면 이렇다.


org.xml.sax.SAXParseException: The element type "link" must be terminated by the matching end-tag "</link>"

즉, SAX Parsing을 할 때에 태그는 꼭 닫아 줘야한다.


이런 부분들이 불편할 경우, thymeleaf mode를 legacy html5로 주면 된다.



 thymeleaf mode를 legacy html5로 설정하는 방법




spring.thymeleaf.mode=LEGACYHTML5


그냥 단순하게 application.properties에 위와 같은 코드만 적어 주면 끝이라고 생각하면 오산이다.

사실 처음에 저걸 시도 했다가 실패해서 HTML5 모드로 꼬박꼬박 태그 닫아가며 개발 하다가 뭔가 방법이 있을듯 하여 찾아보니 pom.xml에 다음과 같은 dependency를 추가해 줘야 했다.


1
2
3
4
5
6
7
8
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
             <groupId>net.sourceforge.nekohtml</groupId>
             <artifactId>nekohtml</artifactId>
         </dependency>
cs


thymeleaf dependency는 당연히 있을 것이고, 그 아래의 nekohtml을 추가해 주면, 태그를 닫지 않더라도 화면이 정상 출력된다.


이 상황에서도 thymeleaf가 지원하는 html5에서의 유용한 기능들을 모두 사용할 수 있을지 테스트 해 봐야겠다.

thymeleaf를 사용하며 느낀 가장 큰 단점은 다른게 아니고, 사용하는 사람이 아직 적은 것인지 커뮤니티에 활성화 되어 있지 않다는 점이다.

특히 국내 커뮤니티나 블로그에서의 정보를 찾아보기는 정말 힘들다.

하나씩 하나씩 넘어져 가며 공부해야 할 듯 싶다.



반응형

 Other Contents