본문 바로가기

Thymeleaf3

Springboot 에서 react.js 연동시 모든 view 맵핑을 index.html으로 forwarding 하는 방법은? [문제] SpringBoot 에서 thymeleaf 대신, React.js 를 ViewTemplate 로 사용하려 한다. 기존의 thymeleaf 는 html 별로 View을 맵핑하고 있었기 때문에, 하나의 html 에서 URL에 따른 여러 화면으로 라우팅되는 SPA Application 에서는 ViewName 맵핑이 정상적으로 동작되지 않는다. ( 참고자료 ) 예를 들어, product/list 라는 View 이름으로 맵핑을 시도한다고 가정해본다면, 프로젝트에서는 /WEB-INF/templates/product/list.html 와 같은 형태로 ViewTemplate 을 맵핑하기 위한 html 이 존재해야 합니다.(꼭, html 일 필요는 없음) 그러므로, 하나의 html 에서 원하는 URL로 라우팅시.. 2022. 4. 26.
Thymeleaf CheatSheet - 2 (template layout) 공통된 영역은 따로 분리해서 개발해야 한다. 그런 부분에 대한 처리가 바로 템플릿 레이아웃이다. 3가지 방식이 있다. 1. 템플릿 조각 th:fragment 태그의 의미는 다른 곳에 포함되는 코드 조각이라 이해하면 된다. 어떻게 사용하는가? // footer.html 푸터 자리 입니다. 파라미터 자리 입니다. footer.html 에서 2개의 fragment 를 copy 와copyParam 선언했습니다. 그럼 선언한 fragment 를 사용한 부분은 다음과 같습니다. 부분 포함 부분 포함 insert 부분 포함 replace 부분 포함 단순 표현식 파라미터 사용 ~{...} 를 사용 와 같이 footer :: copy 사용 insert 와 replace 의 차이는 현재 태그가 어떻게 되는지에 대한 차이 .. 2021. 9. 6.
Thymeleaf CheatSheet - 1 (basic) Thymeleaf CheatSheet - 1 (basic) 1. 텍스트 - text, utext text vs utext th:text = th:utext = [[...]] vs [(...)] [[...]] = [[${data}]] [(...)] = [(${data})] = ${users[0]['username']} = ${users[0].getUsername()} = Map ${userMap['userA'].username} = ${userMap['userA']['username']} = ${userMap['userA'].getUsername()} = map 으로 선언된 객체일 경우 인텔리제이에서 인식하지 못하는 경우도 있는것 같다.. 2021. 9. 6.